Index: /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/helpers/VerificationServices.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/helpers/VerificationServices.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/helpers/VerificationServices.java	(revision 1632)
@@ -2,4 +2,5 @@
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -535,7 +536,46 @@
 	
 	
+	private static TreeObject findTreeObject(ClassInstantiation ci, TreeObject objectFromOtherClassInstantiation){
+		
+		for (TreeObject treeObject : ci.getAllTreeObjects()) {
+			
+			String name = treeObject.getName();
+			String dotPath = treeObject.getDotPath();
+			Element element = treeObject.getUmlElement();
+			
+			if (name.equals(objectFromOtherClassInstantiation.getName())
+					&& dotPath.equals(objectFromOtherClassInstantiation.getDotPath())
+					&& element.equals(objectFromOtherClassInstantiation.getUmlElement())) {
+				return treeObject;
+			}
+		}
+		return null;
+	}
 	
 	
 	public static List<TreeObject> getClientsTreeItems(ClassInstantiation ci, TreeObject treeItem, HashSet<TreeObject> collectedItems, boolean onlyMandatoryClients) {
+		
+		/*
+		 * TODO: sometimes treeItem is null. find the bug...
+		 */
+		if (treeItem == null) {
+			return new ArrayList<TreeObject>();
+		}
+
+		/*
+		 * Sometimes the passed treeItem is not contained within the passed instantiation.
+		 * This may happen when instantiations were cashed and or recreated before being passed. 
+		 * In order to avoid confusion we first make sure that we find the 
+		 * right treeObject inside the passed instantiation based on
+		 * the name, dotPath and the UML element of the passed treeItem.  
+		 */
+		if (!ci.getAllTreeObjects().contains(treeItem)) {
+			treeItem = findTreeObject(ci, treeItem);
+		}
+
+		if (treeItem == null) {
+			// empty
+			return new ArrayList<TreeObject>();
+		}
 		
 		HashSet<TreeObject> collectedItem_temp = new HashSet<TreeObject>();
Index: /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/instantiation/ClassInstantiation.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/instantiation/ClassInstantiation.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/instantiation/ClassInstantiation.java	(revision 1632)
@@ -60,6 +60,6 @@
 import org.eclipse.uml2.uml.Type;
 import org.openmodelica.modelicaml.common.constants.Constants;
+import org.openmodelica.modelicaml.common.services.ModelicaMLServices;
 import org.openmodelica.modelicaml.common.services.StringUtls;
-import org.openmodelica.modelicaml.common.services.UmlServices;
 import org.openmodelica.modelicaml.common.valuebindings.helpers.BindingsDataCollector;
 
@@ -218,7 +218,7 @@
 						
 						for (Property propertyInherited : inheritedProperties) { // iterate over the class attributes
-							String nameInheritedProperty = propertyInherited.getName();
+							String nameInheritedProperty = StringUtls.replaceSpecChar(propertyInherited.getName());
 							for (Property propertyPassed : passedAList) { // iterate over the passed list
-								String namePropertyPassed = propertyPassed.getName();
+								String namePropertyPassed = StringUtls.replaceSpecChar(propertyPassed.getName());
 								if (nameInheritedProperty.equals(namePropertyPassed)) { // if a duplicate is found ...
 									mergedSet.remove(propertyInherited); // remove duplicate from the final list.
@@ -253,8 +253,10 @@
 	
 			String newDotPath = "";
+			String name = StringUtls.replaceSpecChar(property.getName());
+			
 			if (!dotPath.equals("")) {
-				newDotPath = dotPath + "." + property.getName();
+				newDotPath = dotPath + "." + name;
 			} else {
-				newDotPath = property.getName();
+				newDotPath = name;
 			}
 	
@@ -264,5 +266,5 @@
 				HashSet<String> modifications = null;
 				
-				TreeParent child = new TreeParent(property.getName(), property, firstLevelComponent, newDotPath, true, false, modifications, selectedClass, includeStateMachines);
+				TreeParent child = new TreeParent(name, property, firstLevelComponent, newDotPath, true, false, modifications, selectedClass, includeStateMachines);
 				parent.addChild(child);
 				allTreeObjects.add(child);
@@ -297,5 +299,5 @@
 				
 				HashSet<String> modifications = null;
-				TreeParent newParent = new TreeParent(property.getName(), property, firstLevelComponent, newDotPath, false, false, modifications, selectedClass, includeStateMachines);
+				TreeParent newParent = new TreeParent(name, property, firstLevelComponent, newDotPath, false, false, modifications, selectedClass, includeStateMachines);
 				parent.addChild(newParent);
 				allTreeObjects.add(newParent);
@@ -312,5 +314,6 @@
 				newParent.setComponentType(pType); 
 				
-				if (pType instanceof Class && (Class) pType != aClass && !(pType instanceof Stereotype)) { // TODO: // prevent endless looping, implement it correctly!
+				// TODO: // prevent endless looping, implement it correctly!
+				if (pType instanceof Class && (Class) pType != aClass && !(pType instanceof Stereotype)) { 
 					buildNextTreeLevel((Class) pType, firstLevelComponent, newParent, newDotPath);
 				}
@@ -332,11 +335,28 @@
 	 * @return the component modifications
 	 */
+//	@SuppressWarnings("unchecked")
+//	public HashSet<String> getComponentModifications(Property component) {
+//		HashSet<String> mList = new HashSet<String>();
+//		String stereotypeName = getFirstModelicaMLComponentStereotypeName(component);
+//		List<String> modificationList = new ArrayList<String>();
+//		if (stereotypeName != null) {
+//			Object o = UmlServices.getStereotypeValue((Element) component, getFirstModelicaMLComponentStereotypeName(component), "modification");
+//			if (o instanceof List<?>) {
+//				modificationList = (List<String>) o;
+//			}
+//			for (String string : modificationList) {
+//				mList.add(StringUtls.removeOutterBraces(string));
+//			}
+//		}
+//		return mList;
+//	}
+	
 	@SuppressWarnings("unchecked")
 	public HashSet<String> getComponentModifications(Property component) {
 		HashSet<String> mList = new HashSet<String>();
-		String stereotypeName = getFirstModelicaMLComponentStereotypeName(component);
+		Stereotype stereotype = ModelicaMLServices.getFirstModelicaMLComponentStereotype(component);
 		List<String> modificationList = new ArrayList<String>();
-		if (stereotypeName != null) {
-			Object o = UmlServices.getStereotypeValue((Element) component, getFirstModelicaMLComponentStereotypeName(component), "modification");
+		if (stereotype != null) {
+			Object o = component.getValue(stereotype, Constants.propertyName_modification);
 			if (o instanceof List<?>) {
 				modificationList = (List<String>) o;
@@ -354,18 +374,15 @@
 		
 		for (Generalization generalization : extendsRelations) {
-			Stereotype stereotype = getGeneralizationStereotype(generalization);
-			if ( stereotype != null ) {
-				EList<String> modList = getGeneralizationModifications(generalization, stereotype);
-				for (String string : modList) {
-					addToModificationList(string, dotPath, aClass);
-				}
-				// recursive call to the next inheritance level
-				EList<Element> targets = generalization.getTargets();
-				for (Element element : targets) {
-					if (element instanceof Class) {
-						addInheritedClassModifications((Class)element, dotPath); 
-					}
-				}
-				
+			EList<String> modList = getGeneralizationModifications(generalization);
+			for (String string : modList) {
+				addToModificationList(string, dotPath, aClass);
+			}
+			
+			// recursive call to the next inheritance level
+			EList<Element> targets = generalization.getTargets();
+			for (Element element : targets) {
+				if (element instanceof Class) {
+					addInheritedClassModifications((Class)element, dotPath); 
+				}
 			}
 		}
@@ -514,5 +531,5 @@
 
 					boolean skip = false;
-					if (predefinedPropertyName != null && !p.getName().equals(predefinedPropertyName)) {
+					if (predefinedPropertyName != null && !StringUtls.replaceSpecChar(p.getName()).equals(predefinedPropertyName)) {
 						skip = true;
 					}
@@ -520,12 +537,13 @@
 					if (!skip) {
 						String newDotPath = "";
+						String name = StringUtls.replaceSpecChar(p.getName());
 						if (!dotPath.equals("")) {
-							newDotPath = dotPath + "." + p.getName();
+							newDotPath = dotPath + "." + name;
 						} else {
-							newDotPath = p.getName();
+							newDotPath = name;
 						}
 
 						HashSet<String> modifications = null;
-						TreeParent child = new TreeParent(p.getName(), p, firstLevelComponent, newDotPath, true, false, modifications, selectedClass, false);
+						TreeParent child = new TreeParent(name, p, firstLevelComponent, newDotPath, true, false, modifications, selectedClass, false);
 						parent.addChild(child);
 						allTreeObjects.add(child);
@@ -576,21 +594,21 @@
 	
 
-	/**
-	 * Gets the generalization stereotype.
-	 * 
-	 * @param extendsRelation
-	 *            the extends relation
-	 * @return the generalization stereotype
-	 */
-	private static Stereotype getGeneralizationStereotype(Generalization extendsRelation) {
-		Stereotype stereotype = null;
-		if (UmlServices.hasStereotype((Element) extendsRelation, "ExtendsRelation"))
-			return stereotype = extendsRelation.getAppliedStereotype("ModelicaML::ModelicaRelationsConstructs::ExtendsRelation");
-		
-		if (UmlServices.hasStereotype((Element) extendsRelation, "TypeRelation"))
-			return stereotype = extendsRelation.getAppliedStereotype("ModelicaML::ModelicaRelationsConstructs::TypeRelation");
-		
-		return stereotype;
-	}
+//	/**
+//	 * Gets the generalization stereotype.
+//	 * 
+//	 * @param extendsRelation
+//	 *            the extends relation
+//	 * @return the generalization stereotype
+//	 */
+//	private static Stereotype getGeneralizationStereotype(Generalization extendsRelation) {
+//		Stereotype stereotype = null;
+//		if (UmlServices.hasStereotype((Element) extendsRelation, "ExtendsRelation"))
+//			return stereotype = extendsRelation.getAppliedStereotype("ModelicaML::ModelicaRelationsConstructs::ExtendsRelation");
+//		
+//		if (UmlServices.hasStereotype((Element) extendsRelation, "TypeRelation"))
+//			return stereotype = extendsRelation.getAppliedStereotype("ModelicaML::ModelicaRelationsConstructs::TypeRelation");
+//		
+//		return stereotype;
+//	}
 
 	/**
@@ -603,11 +621,32 @@
 	 * @return the generalization modifications
 	 */
+//	@SuppressWarnings("unchecked")
+//	private EList<String> getGeneralizationModifications(Generalization extendsRelation, Stereotype stereotype) {
+//		EList<String> mList = new BasicEList<String>();
+//		
+//		List<String> modificationList = new ArrayList<String>();
+//		if (stereotype != null) {
+//			Object o = UmlServices.getStereotypeValue((Element) extendsRelation, stereotype.getName(), "modification");
+//			if (o instanceof List<?>) {
+//				modificationList = (List<String>) o;
+//			}
+//			mList.addAll(modificationList);
+//		}
+//		return mList;
+//	}
+	
 	@SuppressWarnings("unchecked")
-	private EList<String> getGeneralizationModifications(Generalization extendsRelation, Stereotype stereotype) {
+	private EList<String> getGeneralizationModifications(Generalization extendsRelation) {
 		EList<String> mList = new BasicEList<String>();
 		
 		List<String> modificationList = new ArrayList<String>();
+		
+		Stereotype stereotype = extendsRelation.getAppliedStereotype(Constants.stereotypeQName_ExtendsRelation);
+		if (stereotype == null) {
+			stereotype = extendsRelation.getAppliedStereotype(Constants.stereotypeQName_TypeRelation);
+		}
+		
 		if (stereotype != null) {
-			Object o = UmlServices.getStereotypeValue((Element) extendsRelation, stereotype.getName(),"modification");
+			Object o = extendsRelation.getValue(stereotype, Constants.propertyName_modification);
 			if (o instanceof List<?>) {
 				modificationList = (List<String>) o;
@@ -618,19 +657,33 @@
 	}
 
-	/**
-	 * Gets the first modelica ml component stereotype name.
-	 * 
-	 * @param property
-	 *            the property
-	 * @return the first modelica ml component stereotype name
-	 */
-	private String getFirstModelicaMLComponentStereotypeName(Property property) {
-		String name = null;
-		if (UmlServices.hasStereotype((Element) property, "Component")) return "Component";
-		if (UmlServices.hasStereotype((Element) property, "Variable")) return "Variable";
-		if (UmlServices.hasStereotype((Element) property, "RequirementInstance")) return "RequirementInstance";
-		if (UmlServices.hasStereotype((Element) property, "CalculatedProperty")) return "CalculatedProperty";
-		return name;
-	}
+//	/**
+//	 * Gets the first modelica ml component stereotype name.
+//	 * 
+//	 * @param property
+//	 *            the property
+//	 * @return the first modelica ml component stereotype name
+//	 */
+//	private String getFirstModelicaMLComponentStereotypeName(Property property) {
+//		String name = null;
+//		if (UmlServices.hasStereotype((Element) property, "Component")) return "Component";
+//		if (UmlServices.hasStereotype((Element) property, "Variable")) return "Variable";
+//		if (UmlServices.hasStereotype((Element) property, "RequirementInstance")) return "RequirementInstance";
+//		if (UmlServices.hasStereotype((Element) property, "CalculatedProperty")) return "CalculatedProperty";
+//		return name;
+//	}
+	
+//	private Stereotype getFirstModelicaMLComponentStereotype(Property property) {
+//		Stereotype stereotype = null;
+//		
+//		stereotype = property.getAppliedStereotype(Constants.stereotypeQName_Component);
+//		if (stereotype != null) { return stereotype; }
+//		stereotype = property.getAppliedStereotype(Constants.stereotypeQName_Variable);
+//		if (stereotype != null) { return stereotype; }
+//		stereotype = property.getAppliedStereotype(Constants.stereotypeQName_RequirementInstance);
+//		if (stereotype != null) { return stereotype; }
+//		stereotype = property.getAppliedStereotype(Constants.stereotypeQName_CalculatedProperty);
+//		if (stereotype != null) { return stereotype; }
+//		return stereotype ;
+//	}
 	
 	
@@ -907,4 +960,16 @@
 
 	public HashSet<Element> getAllMediators() {
+		if (getValueBindingsDataCollector().getAllMediators() != null ) {
+
+			if (allMediators == null) {
+				/*
+				 * TODO: not clear when this happens
+				 */
+				return getValueBindingsDataCollector().getAllMediators();
+			}
+			else {
+				this.allMediators.addAll(getValueBindingsDataCollector().getAllMediators());
+			}
+		}
 		return allMediators;
 	}
Index: /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/instantiation/ModificationManager.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/instantiation/ModificationManager.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/instantiation/ModificationManager.java	(revision 1632)
@@ -53,5 +53,4 @@
 import org.openmodelica.modelicaml.common.services.EditorServices;
 import org.openmodelica.modelicaml.common.services.StringUtls;
-import org.openmodelica.modelicaml.common.services.UmlServices;
 
 
@@ -425,5 +424,6 @@
 
 		// apply ModelicaML stereotype to the properties
-		if ( !UmlServices.hasStereotype(p, Constants.stereotypeQName_Variable) ) {
+//		if ( !UmlServices.hasStereotype(p, Constants.stereotypeQName_Variable) ) {
+		if ( p.getAppliedStereotype(Constants.stereotypeQName_Variable) == null) {
 			final Stereotype pStereotype = p.getApplicableStereotype(Constants.stereotypeQName_Variable);
 			//########## storing start
@@ -567,5 +567,6 @@
 		
 		// apply ModelicaML stereotype to the properties
-		if ( !UmlServices.hasStereotype(p, Constants.stereotypeQName_Variable) ) {
+//		if ( !UmlServices.hasStereotype(p, Constants.stereotypeQName_Variable) ) {
+		if ( p.getAppliedStereotype(Constants.stereotypeQName_Variable) == null ) {
 			final Stereotype pStereotype = p.getApplicableStereotype(Constants.stereotypeQName_Variable);
 			
Index: unk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/instantiation/ModificationsCollector.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/instantiation/ModificationsCollector.java	(revision 1631)
+++ 	(revision )
@@ -1,462 +1,0 @@
-/*
- * This file is part of OpenModelica.
- *
- * Copyright (c) 1998-CurrentYear, Open Source Modelica Consortium (OSMC),
- * c/o Linköpings universitet, Department of Computer and Information Science,
- * SE-58183 Linköping, Sweden.
- *
- * All rights reserved.
- *
- * THIS PROGRAM IS PROVIDED UNDER THE TERMS OF GPL VERSION 3 LICENSE OR 
- * THIS OSMC PUBLIC LICENSE (OSMC-PL). 
- * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
- * OF THE OSMC PUBLIC LICENSE OR THE GPL VERSION 3, ACCORDING TO RECIPIENTS CHOICE. 
- *
- * The OpenModelica software and the Open Source Modelica
- * Consortium (OSMC) Public License (OSMC-PL) are obtained
- * from OSMC, either from the above address,
- * from the URLs: http://www.ida.liu.se/projects/OpenModelica or  
- * http://www.openmodelica.org, and in the OpenModelica distribution. 
- * GNU version 3 is obtained from: http://www.gnu.org/copyleft/gpl.html.
- *
- * This program is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of  MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE, EXCEPT AS EXPRESSLY SET FORTH
- * IN THE BY RECIPIENT SELECTED SUBSIDIARY LICENSE CONDITIONS OF OSMC-PL.
- *
- * See the full OSMC Public License conditions for more details.
- *
- * Main author: Wladimir Schamai, EADS Innovation Works / Linköping University, 2009-now
- *
- * Contributors: 
- *   Uwe Pohlmann, University of Paderborn 2009-2010, contribution to the Modelica code generation for state machine behavior, contribution to Papyrus GUI adoptations
- *   Parham Vasaiely, EADS Innovation Works / Hamburg University of Applied Sciences 2009-2011, implementation of simulation plugins
- */
-package org.openmodelica.modelicaml.common.instantiation;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-
-import org.eclipse.uml2.uml.Element;
-import org.eclipse.uml2.uml.Property;
-import org.openmodelica.modelicaml.common.services.StringUtls;
-import org.openmodelica.modelicaml.common.services.UmlServices;
-//import org.openmodelica.modelicaml.view.componentstree.utls.UmlServices;
-
-
-// TODO: Auto-generated Javadoc
-/**
- * The Class ModificationsCollector.
- */
-public class ModificationsCollector {
-	
-//	// TODO: refactor this code!!!
-//	
-//	public static HashMap<String,Type> redeclaredComponentTypes = new HashMap<String,Type>();
-//	
-//	public static void clear(){
-//		redeclaredComponentTypes.clear();
-//	}
-//	/**
-//	 * Gets the merged component modifications.
-//	 * 
-//	 * @param selectedClass
-//	 *            the selected class
-//	 * @param component
-//	 *            the component
-//	 * @param dotPath
-//	 *            the dot path
-//	 * @param modificationsFromhigherComponentLevel
-//	 *            the modifications fromhigher component level
-//	 * @return the merged component modifications
-//	 */
-//	public static HashSet<String> getMergedComponentModifications(Class selectedClass, Property component, String dotPath, HashSet<String> modificationsFromhigherComponentLevel){
-//		HashSet<String> modifications = new HashSet<String>();
-//		
-//		if (component != null) {
-//			Element owner = component.getOwner();
-//			if (owner instanceof Class) { 
-//
-//				// get all inherited class modification of the class selected in View
-//				HashSet<String> classInheritedModList = new HashSet<String>();
-//				classInheritedModList.addAll(getAllInheritedClassModifications(selectedClass, modificationsFromhigherComponentLevel));	
-//				
-////				if (classInheritedModList.size() > 0) {
-////					System.err.println(dotPath + "  ##  " + classInheritedModList.toString());					
-////				}
-//				
-////				HashSet<String> classInheritedModListCopy = new HashSet<String>();
-////				classInheritedModListCopy.addAll(classInheritedModList);
-////				
-////				for (String string : classInheritedModListCopy) {
-////					if ( !string.trim().equals("") ) {
-////						if ( !isSimpleComponentValueBinding(string) ) {
-////							classInheritedModList.remove(string);
-//////							System.err.println(string);
-////							addRedeclaredComponentTypeEntry(string, dotPath, component);
-////						}
-////					}
-////				}
-//				
-//				// merge inherited class modification with passed modifications (which have higher priority) 
-//				HashSet<String> higherLevelAndInheritedModList = merge2Lists(modificationsFromhigherComponentLevel, classInheritedModList);
-//				
-//				// get all components modification
-//				HashSet<String> componentModificationList = getComponentModifications(component);
-//				// normalize components modification (add the dotPath to each modification)
-//				HashSet<String> componentModificationList_normalized = new HashSet<String>();
-//				for (String string : componentModificationList) {
-////					if (string.contains("redeclare ")) {
-////						String s = StringUtls.removeOutterBraces(string).replaceFirst("redeclare ", "").replaceFirst("each ", "").replaceFirst("final ", "").trim();
-////						String[] splitted = s.split(" ");
-////						if (splitted.length == 2) {
-////							System.err.println("Type : " + splitted[0]);
-////							System.err.println("Component : " + splitted[1]);
-////						}
-////					}
-//					if ( !string.trim().equals("") ) {
-//						if ( isSimpleComponentValueBinding(string) ) {
-//							componentModificationList_normalized.add(dotPath + "." + string);
-//						}
-//						else {
-//							componentModificationList_normalized.add(string);
-////							addRedeclaredComponentTypeEntry(string, dotPath, component);
-//
-//						}
-//						//System.out.println(component.getName() + " : " + string);
-//					}
-//				}
-//				
-//				// get and normalize all modifications that are inherited by the component type
-//				HashSet<String> componentOwnerInheritedModList = new HashSet<String>();
-//				HashSet<String> componentOwnerInheritedModList_normalized = new HashSet<String>();
-//				Type componentType = component.getType();
-//				if (componentType != null) {
-//					if (componentType instanceof Class) {
-//						componentOwnerInheritedModList.addAll(getAllInheritedClassModifications((Class)componentType, null));
-//						for (String string : componentOwnerInheritedModList) {
-//							if ( !string.trim().equals("") ) {
-//								if ( isSimpleComponentValueBinding(string) ) {
-//									componentOwnerInheritedModList_normalized.add(dotPath + "." + string);
-//								}
-//								else {
-//									componentOwnerInheritedModList_normalized.add(string);
-////									addRedeclaredComponentTypeEntry(string, dotPath, component);
-//								}
-//							
-//							}
-////							if (string.contains("redeclare ")) { // this works also!
-////								System.err.println(string);
-////							}
-//						}
-//					}
-//				}
-//				
-//				// merge component modifications and modifications inherited by the component class
-//				HashSet<String> componentModCompTypeInheritedModList = merge2Lists(componentModificationList_normalized, componentOwnerInheritedModList_normalized);
-//				
-//				// merge passed modifications (high priority, will not be overwritten) and component modifications
-//				//modifications.addAll(merge2Lists(higherLevelAndInheritedModList, componentModCompTypeInheritedModList));
-//				modifications.addAll(merge2Lists(higherLevelAndInheritedModList, componentModCompTypeInheritedModList));
-//			}
-//		}
-//		
-////		// add redeclarations found and remove them found from the simple value binding list
-////		HashSet<String> modificationsCopy = new HashSet<String>();
-////		modificationsCopy.addAll(modifications);
-////		
-////		for (String string : modificationsCopy) {
-////			if (string.contains("redeclare ")) { // this works
-//////				System.err.println(dotPath + " -- " + string);
-////				addRedeclaredComponentTypeEntry(string, dotPath, component);
-////				modifications.remove(string);
-////				System.err.println("removed from modifications list: " + string);
-////			}	
-////		}
-//		
-////		System.err.println(dotPath + " number " + modifications.toString());
-//		
-//		// final list
-//		HashSet<String> finalList = new HashSet<String>();
-//		
-//		for (String string : modifications) {
-////			if (string.contains("redeclare ")) { // this works
-////				addRedeclaredComponentTypeEntry(string, dotPath, component);
-////			}else 
-//			if (string.startsWith(dotPath)) {
-//				// clean up: filter the list to get only modifications for the component on hand and its sub-tree 
-//				finalList.add(string);
-//				//System.out.println(component.getName() + " : " + string);
-//			}
-//		}
-//		return finalList;
-//	}
-
-//	private static void addRedeclaredComponentTypeEntry(String string, String dotPath, Property property){
-//		//match a component type redeclaration
-//		if (string.contains("redeclare ")) {
-//			String s = StringUtls.removeOutterBraces(string).replaceFirst("redeclare ", "").replaceFirst(" each ", "").replaceFirst(" final ", "").trim();
-//			String[] splitted = s.split(" ");
-//			
-//			if (splitted.length == 2) {
-//				String typeDotPath = splitted[0].trim();
-//				String componentName = splitted[1].trim();
-//				String componentDotPath = dotPath + "." + splitted[1].trim();
-//				
-//				Type type = findType(property, typeDotPath);
-//				if (type != null) {
-//					if (redeclaredComponentTypes.containsKey(componentDotPath)) {
-//						redeclaredComponentTypes.remove(componentDotPath);
-////							System.err.println("removed: " + componentDotPath + " -> " + type.getQualifiedName());
-//						redeclaredComponentTypes.put(componentDotPath, type);
-////						System.err.println("replaced: " + componentDotPath + " -> " + type.getQualifiedName());
-//					}
-//					else {
-//						redeclaredComponentTypes.put(componentDotPath, type);
-////						System.err.println("added: " + componentDotPath + " -> " + type.getQualifiedName());
-//					}
-//				}
-//			}
-//		}
-//	}
-	
-//	private static Type findType(Property property, String dotPath){
-//		Model model = property.getModel();
-//		Iterator<EObject> i = model.eAllContents();
-////		List<EObject> redeclaredTypes = new ArrayList<EObject>() ;
-////		Type type = null;
-//		String typeDotPath = "";
-//		while (i.hasNext()) {
-//			EObject object = i.next() ;
-//			if (object instanceof Class )
-//				typeDotPath = StringUtls.replaceSpecCharExceptThis(((Class)object).getQualifiedName(), "::").replaceAll("::", ".");
-//				if (typeDotPath.equals(dotPath)) {
-//					return (Type) object;
-//				}
-//		}
-//		return null;
-//	}
-	
-//	private static Boolean isSimpleComponentValueBinding(String modification){
-//		if (modification.contains("redeclare ")) {
-//			return false;
-//		}
-//		return true;
-//	}
-//	
-//	/**
-//	 * Gets the all inherited class modifications.
-//	 * 
-//	 * @param aClass
-//	 *            the a class
-//	 * @param passedModifications
-//	 *            the passed modifications
-//	 * @return the all inherited class modifications
-//	 */
-//	public static HashSet<String> getAllInheritedClassModifications(Class aClass, HashSet<String> passedModifications){
-//		HashSet<String> extendsRelationModifications = new HashSet<String>();
-//		HashSet<String> mergedModifications = new HashSet<String>();
-//		HashSet<String> finalSet = new HashSet<String>();
-//		
-//		EList<Generalization> extendsRelations = aClass.getGeneralizations();
-//		
-//		for (Generalization generalization : extendsRelations) {
-//			Stereotype stereotype = getGeneralizationStereotype(generalization);
-//			if ( stereotype != null ) {
-//				extendsRelationModifications.addAll(getGeneralizationModifications(generalization, stereotype));
-//				if (passedModifications != null) {
-//					mergedModifications = merge2Lists(passedModifications, extendsRelationModifications);
-//				}
-//				else {
-//					mergedModifications.addAll(extendsRelationModifications);
-//				}
-//				
-//				EList<Element> targets = generalization.getTargets();
-//				for (Element element : targets) {
-//					if (element instanceof Class) {
-//						mergedModifications.addAll(getAllInheritedClassModifications((Class)element, mergedModifications)); 
-//					}
-//				}
-//				
-//			}
-//		}
-//		
-//		finalSet.addAll(mergedModifications); // no duplicates
-//		return finalSet;
-//	}
-	
-	
-	//TODO: do the same as for the Class (above) for the Primitive type with TypeRelation
-//	/**
-//	 * Gets the primitive type modifications.
-//	 * 
-//	 * @param primitiveType
-//	 *            the primitive type
-//	 * @return the primitive type modifications
-//	 */
-//	public EList<String> getPrimitiveTypeModifications(PrimitiveType primitiveType){
-//		EList<String> modifications = new BasicEList<String>();
-//		return modifications;
-//	}
-
-	
-	/**
-	 * Merge2 lists.
-	 * 
-	 * @param listHighPrioriy
-	 *            the list high priority
-	 * @param listLowPriority
-	 *            the list low priority
-	 * @return the hash set
-	 */
-	private static HashSet<String> merge2Lists(HashSet<String> listHighPriority,
-			HashSet<String> listLowPriority) {
-
-		HashSet<String> mergedList = new HashSet<String>();
-
-		HashSet<String> list1 = new HashSet<String>(); // has higher priority
-		list1.addAll(listHighPriority);
-
-		HashSet<String> list2 = new HashSet<String>();
-		list2.addAll(listLowPriority);
-
-		HashSet<String> list2_copy = new HashSet<String>(); // copy of the list that has lower priority
-		list2_copy.addAll(list2);
-
-		for (String string : list2) {
-			String[] splittedStringList2 = string.split("=");
-			String firtsPartList2 = splittedStringList2[0].trim();
-			for (String string_from_list_1 : list1) {
-				String[] splittedStringList1Copy = string_from_list_1.split("=");
-				String firtsPartList1Copy = splittedStringList1Copy[0].trim();
-				if (firtsPartList1Copy.equals(firtsPartList2)) { // if the high priority list has an item from lower priority list
-					list2_copy.remove(string); // remove the item from the lower priority list
-				}
-			}
-		}
-		list1.addAll(list2_copy); // add all remaining items from lower priority list to higher priority list. 
-		//lower priority list1 now contains all items that are missing in higher priority list2.
-
-		mergedList.addAll(list1);
-
-		return mergedList;
-	}
-
-//	// TODO: create final strings for the stereotypes names and properties names
-//
-//	/**
-//	 * Gets the component stereotype.
-//	 * 
-//	 * @param property
-//	 *            the property
-//	 * @return the component stereotype
-//	 */
-//	private static Stereotype getComponentStereotype(Property property) {
-//		Stereotype stereotype = null;
-//		if (UmlServices.hasStereotype((Element) property, "Component"))
-//			return stereotype = property
-//					.getAppliedStereotype("ModelicaML::ModelicaCompositeConstructs::Component");
-//		if (UmlServices.hasStereotype((Element) property, "Variable"))
-//			return stereotype = property
-//					.getAppliedStereotype("ModelicaML::ModelicaCompositeConstructs::Variable");
-//		if (UmlServices.hasStereotype((Element) property, "CalculatedProperty"))
-//			return stereotype = property
-//					.getAppliedStereotype("ModelicaML::ModelicaCompositeConstructs::CalculatedProperty");
-//		// note: requirementInstance in is another profile than the rest!
-//		if (UmlServices
-//				.hasStereotype((Element) property, "RequirementInstance"))
-//			return stereotype = property
-//					.getAppliedStereotype("ModelicaML::ModelicaRequirementConstructs::RequirementInstance");
-//		return stereotype;
-//	}
-	
-//	/**
-//	 * Gets the generalization stereotype.
-//	 * 
-//	 * @param extendsRelation
-//	 *            the extends relation
-//	 * @return the generalization stereotype
-//	 */
-//	private static Stereotype getGeneralizationStereotype(Generalization extendsRelation) {
-//		Stereotype stereotype = null;
-//		if (UmlServices.hasStereotype((Element) extendsRelation, "ExtendsRelation"))
-//			return stereotype = extendsRelation.getAppliedStereotype("ModelicaML::ModelicaRelationsConstructs::ExtendsRelation");
-//		
-//		if (UmlServices.hasStereotype((Element) extendsRelation, "TypeRelation"))
-//			return stereotype = extendsRelation.getAppliedStereotype("ModelicaML::ModelicaRelationsConstructs::TypeRelation");
-//		
-//		return stereotype;
-//	}
-
-	/**
-	 * Gets the component modifications.
-	 * 
-	 * @param component
-	 *            the component
-	 * @return the component modifications
-	 */
-	public static HashSet<String> getComponentModifications(Property component) {
-		HashSet<String> mList = new HashSet<String>();
-		String stereotypeName = getFirstModelicaMLComponentStereotypeName(component);
-		List<String> modificationList = new ArrayList<String>();
-		if (stereotypeName != null) {
-			Object o = UmlServices.getStereotypeValue((Element) component, getFirstModelicaMLComponentStereotypeName(component), "modification");
-			if (o instanceof List<?>) {
-				modificationList = (List<String>) o;
-			}
-			for (String string : modificationList) {
-				mList.add(StringUtls.removeOutterBraces(string));
-			}
-			//mList.addAll(modificationList);
-		}
-		return mList;
-	}
-	
-//	/**
-//	 * Gets the generalization modifications.
-//	 * 
-//	 * @param extendsRelation
-//	 *            the extends relation
-//	 * @param stereotype
-//	 *            the stereotype
-//	 * @return the generalization modifications
-//	 */
-//	private static EList<String> getGeneralizationModifications(Generalization extendsRelation, Stereotype stereotype) {
-//		EList<String> mList = new BasicEList<String>();
-//		
-//		List<String> modificationList = new ArrayList<String>();
-//		if (stereotype != null) {
-//			Object o = UmlServices.getStereotypeValue((Element) extendsRelation, stereotype.getName(),"modification");
-//			if (o instanceof List<?>) {
-//				modificationList = (List<String>) o;
-//			}
-//			mList.addAll(modificationList);
-//		}
-//		return mList;
-//	}
-
-	/**
-	 * Gets the first modelica ml component stereotype name.
-	 * 
-	 * @param property
-	 *            the property
-	 * @return the first modelica ml component stereotype name
-	 */
-	private static String getFirstModelicaMLComponentStereotypeName(Property property) {
-		String name = null;
-		if (UmlServices.hasStereotype((Element) property, "Component")) return "Component";
-		if (UmlServices.hasStereotype((Element) property, "Variable")) return "Variable";
-		if (UmlServices.hasStereotype((Element) property, "RequirementInstance")) return "RequirementInstance";
-		if (UmlServices.hasStereotype((Element) property, "CalculatedProperty")) return "CalculatedProperty";
-		return name;
-	}
-	
-//	private static String getExtendsStereotypeName(Generalization extendsRelation) {
-//		String name = null;
-//		if (UmlServices.hasStereotype((Element) extendsRelation, "ExtendsRelation")) return "ExtendsRelation";
-//		if (UmlServices.hasStereotype((Element) extendsRelation, "TypeRelation")) return "TypeRelation";
-//		return name;
-//	}
-
-}
Index: /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/instantiation/TreeObject.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/instantiation/TreeObject.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/instantiation/TreeObject.java	(revision 1632)
@@ -52,5 +52,4 @@
 import org.openmodelica.modelicaml.common.constants.Constants;
 import org.openmodelica.modelicaml.common.services.StringUtls;
-import org.openmodelica.modelicaml.common.services.UmlServices;
 
 
@@ -115,5 +114,5 @@
 	
 	/** The final modification description. */
-	private String finalModificationDescription = null;
+//	private String finalModificationDescription = null;
 	
 	// TODO: implement getter and setter
@@ -231,5 +230,5 @@
 			Stereotype stereotype = property.getAppliedStereotype(stereotypeQName_Variable );
 			if (stereotype != null) {
-				Object declarationEquationOrAssignment = UmlServices.getStereotypeValue((Element)property, stereotype.getName(), "declarationEquationOrAssignment");
+				Object declarationEquationOrAssignment = property.getValue(stereotype, Constants.propertyName_declarationEquationOrAssignment);
 				if (declarationEquationOrAssignment instanceof String) {
 					return this.declaration = " " + declarationEquationOrAssignment.toString().trim();
@@ -489,12 +488,38 @@
 	 * @return the boolean
 	 */
+//	private Boolean isInputOrOutputVariable(Property property, String causalityString){
+//		Boolean result = false;
+//		Object causality = null;
+//		if (property instanceof Port) {
+//			causality = UmlServices.getStereotypeValue(property, Constants.stereotypeQName_ConnectionPort, Constants.propertyName_causality);				
+//		}
+//		else if (property instanceof Property) {
+//			causality = UmlServices.getStereotypeValue(property, Constants.stereotypeQName_Variable, Constants.propertyName_causality);								
+//		}
+//
+//		if (causality != null) {
+//			String causalityValue = ((EnumerationLiteral)causality).getName(); 
+//			if (causalityValue.equals(causalityString) ) {
+//				result = true;
+//			}
+//		}
+//		return result;
+//	}
+	
+	
 	private Boolean isInputOrOutputVariable(Property property, String causalityString){
 		Boolean result = false;
 		Object causality = null;
 		if (property instanceof Port) {
-			causality = UmlServices.getStereotypeValue(property, Constants.stereotypeQName_ConnectionPort, Constants.propertyName_causality);				
+			Stereotype sPort = property.getAppliedStereotype(Constants.stereotypeQName_ConnectionPort);
+			if (sPort != null) {
+				causality = property.getValue(sPort, Constants.propertyName_causality);
+			}
 		}
 		else if (property instanceof Property) {
-			causality = UmlServices.getStereotypeValue(property, Constants.stereotypeQName_Variable, Constants.propertyName_causality);								
+			Stereotype sVariable = property.getAppliedStereotype(Constants.stereotypeQName_Variable);
+			if (sVariable != null) {
+				causality = property.getValue(sVariable, Constants.propertyName_causality);
+			}
 		}
 
@@ -507,4 +532,5 @@
 		return result;
 	}
+	
 	
 	
@@ -674,5 +700,5 @@
 	 */
 	@Override
-	public Object getAdapter(java.lang.Class adapter) {
+	public Object getAdapter(@SuppressWarnings("rawtypes") java.lang.Class adapter) {
 		if (adapter == EObject.class) {
 			if (isRoot) { 
Index: /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/services/ModelicaMLServices.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/services/ModelicaMLServices.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/services/ModelicaMLServices.java	(revision 1632)
@@ -42,4 +42,5 @@
 import org.eclipse.uml2.uml.Model;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.Stereotype;
 import org.openmodelica.modelicaml.common.constants.Constants;
@@ -47,7 +48,4 @@
 import org.openmodelica.modelicaml.common.instantiation.TreeObject;
 import org.openmodelica.modelicaml.common.utls.ResourceManager;
-//import org.eclipse.papyrus.core.utils.BusinessModelResolver;
-//import org.eclipse.papyrus.resource.uml.UmlModel;
-//import org.eclipse.papyrus.ui.toolbox.notification.builders.NotificationBuilder;
 
 public class ModelicaMLServices {
@@ -248,4 +246,19 @@
 		}
 		return false;
+	}
+	
+	
+	public static Stereotype getFirstModelicaMLComponentStereotype(Property property) {
+		Stereotype stereotype = null;
+		
+		stereotype = property.getAppliedStereotype(Constants.stereotypeQName_Component);
+		if (stereotype != null) { return stereotype; }
+		stereotype = property.getAppliedStereotype(Constants.stereotypeQName_Variable);
+		if (stereotype != null) { return stereotype; }
+		stereotype = property.getAppliedStereotype(Constants.stereotypeQName_RequirementInstance);
+		if (stereotype != null) { return stereotype; }
+		stereotype = property.getAppliedStereotype(Constants.stereotypeQName_CalculatedProperty);
+		if (stereotype != null) { return stereotype; }
+		return stereotype ;
 	}
 	
Index: /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/services/UmlServices.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/services/UmlServices.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/services/UmlServices.java	(revision 1632)
@@ -46,5 +46,4 @@
 
 
-// TODO: Auto-generated Javadoc
 /**
  * The Class UmlServices.
@@ -53,6 +52,4 @@
 
 
-	
-	
 	/**
 	 * Get the body of OpaqueBehavior ob with index corresponding to the
@@ -63,4 +60,5 @@
 	 * @return the content body.
 	 */
+	@Deprecated
 	public String getBody(OpaqueBehavior ob, String language){
 		List<String> languages = ob.getLanguages();
@@ -90,4 +88,5 @@
 	 * @return the stereotype.
 	 */
+	@Deprecated
 	public static Stereotype getStereotype(Element elt, String stereotype){
 		Stereotype result = null;
@@ -110,4 +109,5 @@
 	 * @return Object contain the value.
 	 */
+	@Deprecated
 	public static Object getStereotypeValue(Element elt, String stereotype,
 			String propertyName) {
@@ -129,4 +129,5 @@
 	 * @return true if found. false else.
 	 */
+	@Deprecated
 	public static boolean hasStereotype(Element elt, String stereotype){
 		return (getStereotype(elt, stereotype) != null);
@@ -139,4 +140,5 @@
 	 * @return Boolean return true if aClass is a behavior.
 	 */
+	@Deprecated
 	public Boolean isBehavior(Class aClass) {
 		if (aClass instanceof Behavior) {
Index: /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/valuebindings/helpers/BindingsDataCollector.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/valuebindings/helpers/BindingsDataCollector.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.common/src/org/openmodelica/modelicaml/common/valuebindings/helpers/BindingsDataCollector.java	(revision 1632)
@@ -272,4 +272,6 @@
 										else {
 											//TODO: log that the mediator or its providers was discarded because they are not used in the instantiation tree.
+											String message = "DISCARDED: Provider '" + ((NamedElement)element).getQualifiedName() + "' for mediator '"+mediator.getQualifiedName()+"' is not used in the instantiated class.";
+											addToLog(message);
 										}
 									}
Index: /trunk/modelicaml/org.openmodelica.modelicaml.feature/feature.xml
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.feature/feature.xml	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.feature/feature.xml	(revision 1632)
@@ -47,11 +47,303 @@
 
    <requires>
-      <import plugin="org.eclipse.xtext"/>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import plugin="org.eclipse.core.resources" version="3.6.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.ecore" version="2.6.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.uml2.uml" version="3.1.2" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.ui.navigator" version="3.5.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.core.filesystem" version="1.3.100" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.transaction" version="1.4.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.tools.utils" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.infra.core" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.infra.widgets.toolbox" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.views.modelexplorer" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.ui.views.properties.tabbed" version="3.5.300" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.common"/>
+      <import plugin="org.eclipse.xtext" version="2.0.0" match="greaterOrEqual"/>
+      <import plugin="org.apache.log4j" version="1.2.15" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.modeleditor" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.modeleditor.ui" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.uml2.codegen.ecore" version="1.7.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.uml2.uml" version="3.2.100" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.xtext.util"/>
       <import plugin="org.antlr.runtime"/>
+      <import plugin="org.eclipse.xtext.common.types"/>
+      <import plugin="org.apache.commons.logging"/>
+      <import plugin="org.eclipse.xtext.xbase.lib"/>
+      <import plugin="org.eclipse.ui.editors" version="3.5.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.xtext.builder"/>
+      <import plugin="org.eclipse.xtext.common.types.ui"/>
+      <import plugin="org.eclipse.xtext.ui.codetemplates.ui"/>
+      <import plugin="org.eclipse.compare"/>
+      <import plugin="org.eclipse.papyrus.editor" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.common" version="1.0.1" match="greaterOrEqual"/>
+      <import plugin="fr.obeo.acceleo.gen"/>
+      <import plugin="org.eclipse.ui" version="3.5.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.ui.ide" version="3.5.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.core.runtime" version="3.7.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.core.resources" version="3.7.101" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.infra.ui.resources" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.common" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.ecore.xmi"/>
+      <import plugin="org.eclipse.jface"/>
+      <import plugin="org.eclipse.ui.views"/>
+      <import plugin="org.openmodelica.modelicaml.view.valuebindings" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.gen.modelica" version="1.2.2" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.simulation" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.apache.commons.lang" version="2.4.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.uml2.uml" version="4.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.simulation.libs.jfreechart" version="1.0.13" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.ui.console"/>
+      <import plugin="org.eclipse.jdt.ui"/>
+      <import plugin="org.eclipse.papyrus.uml.perspective" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.wizards" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.core.expressions"/>
+      <import plugin="org.eclipse.papyrus.extensionpoints.editors" version="0.8.2" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.extensionpoints" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.profile" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.clazz" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.statemachine" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.activity" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.composite" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.infra.gmfdiag.common" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.gmf.runtime.notation" version="1.5.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.gmf.runtime.diagram.core" version="1.6.0" match="greaterOrEqual"/>
+      <import plugin="fr.obeo.acceleo.template" version="2.8.0" match="greaterOrEqual"/>
+      <import plugin="fr.obeo.acceleo.chain" version="2.8.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.simulation.libs.xom" version="1.2.6" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.core.databinding"/>
+      <import plugin="org.eclipse.core.databinding.beans"/>
+      <import plugin="org.eclipse.core.databinding.observable"/>
+      <import plugin="org.eclipse.core.databinding.property"/>
+      <import plugin="org.eclipse.jface.databinding"/>
+      <import plugin="com.ibm.icu"/>
+      <import plugin="org.eclipse.emf.databinding"/>
+      <import plugin="org.eclipse.core.filesystem" version="1.3.1" match="greaterOrEqual"/>
+      <import plugin="org.modelica.mdt.core" version="0.7.23" match="greaterOrEqual"/>
+      <import plugin="org.modelica.mdt.omc" version="0.7.23" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.uml2.uml" version="3.1.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.ui.browser" version="3.3.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.edit.ui" version="2.6.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.ui.forms" version="3.5.2" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.tabbedproperties.editors.glue" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.activitycontrolflowguardexpression" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.algorithmsection" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.arraysubscript" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.conditionalattribute" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.declaration" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.equationsection" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.modification" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.statetransitionguardexpression" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="com.google.inject" version="2.0.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.properties" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.views.properties" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.tools" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.common" version="2.5.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.xtext" version="0.8.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.gmf.runtime.diagram.ui" version="1.2.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.core.expressions" version="3.4.100" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.xtext.ui.shared" version="0.8.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.uml2.uml" version="3.1.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.helper" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.arraysubscript.ui" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.modification.ui" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.jface.text"/>
+      <import plugin="org.eclipse.swt" version="3.6.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf" version="2.6.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.ocl.uml.edit" version="4.0.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.uml.modelexplorer" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.profile" version="1.2.19" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.tabbedproperties.editors" version="1.0.1" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.valuebinding.client.ui" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.valuebinding.provider.ui" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.editor.xtext.valuebinding.mediator.ui" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.views.modelexplorer.widgets" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.core.resources" version="3.6.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.ui.views.properties.tabbed" version="3.5.200" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.customization.properties" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.customization.paletteconfiguration" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.customization.properties.generation" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.customization.properties.model.xwt" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.validation" version="1.4.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.uml2" version="3.2.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.uml2.uml.edit" version="3.1.100" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.uml2.uml.resources" version="3.1.100" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.validation.ui" version="1.3.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.ui.ide" version="3.7.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.edit.ui" version="2.7.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.modelexplorer" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.view.componentstree" version="1.1.12" match="greaterOrEqual"/>
+      <import plugin="org.openmodelica.modelicaml.modelica.importer" version="1.0.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.core.runtime" version="3.8.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.ui.intro"/>
+      <import plugin="org.eclipse.e4.ui.workbench" version="0.10.2" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.core.commands" version="0.10.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.core.contexts" version="1.1.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.core.di" version="1.1.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.ui.bindings" version="0.10.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.ui.css.core" version="0.10.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.ui.css.swt" version="0.10.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.ui.di" version="0.10.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.ui.services" version="0.10.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.ui.widgets" version="0.12.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.ui.workbench.addons.swt" version="0.10.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.ui.workbench.renderers.swt" version="0.10.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.ui.workbench.swt" version="0.10.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.e4.ui.workbench3" version="0.12.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.infra.core.log" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.converter" version="2.5.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.infra.gmfdiag.preferences" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.infra.core.sasheditor.di" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.ecore.editor" version="2.6.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.workspace.ui" version="1.3.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.core.expressions" version="3.4.200" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.infra.services.edit" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.facet.infra.browser" version="0.1.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.facet.infra.browser.custom" version="0.1.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.facet.infra.browser.custom.core" version="0.1.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.facet.infra.browser.custom.ui" version="0.1.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.facet.infra.browser.uicore" version="0.1.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.facet.infra.common.core" version="0.1.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.facet.infra.facet" version="0.1.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.facet.infra.facet.core" version="0.1.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.facet.infra.query.ui" version="0.1.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.infra.services.decoration" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.gmf.runtime.common.core" version="1.4.1" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.gmf.runtime.emf.commands.core" version="1.4.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.gmf.runtime.emf.type.core" version="1.4.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.emf.facet.infra.query.core"/>
+      <import plugin="org.eclipse.gmf.runtime.diagram.ui" version="1.5.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.papyrus.infra.emf" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="com.google.guava" version="10.0.1" match="greaterOrEqual"/>
       <import feature="fr.obeo.acceleo" version="2.8.0.201102021515"/>
       <import feature="org.eclipse.papyrus.editor.feature" version="0.9.0.v201206131215"/>
-      <import plugin="org.modelica.mdt.core"/>
-      <import plugin="org.modelica.mdt.omc"/>
+      <import feature="org.eclipse.uml2" version="4.0.0.v20120604-0919"/>
+      <import feature="org.eclipse.xtext.runtime" version="2.3.0.v201206120633"/>
+      <import feature="org.eclipse.xtext.ui" version="2.3.0.v201206120633"/>
+      <import feature="org.modelica.mdt" version="0.7.28"/>
+      <import feature="org.eclipse.papyrus.customization.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.infra.core.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.infra.discovery.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.infra.emf.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.infra.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.infra.gmfdiag.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.infra.queries.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.infra.services.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.infra.table.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.infra.widget.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.uml.alf.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.uml.diagram.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.uml.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.uml.modelexplorer.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.uml.properties.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.uml.table.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.uml.textedit.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.uml.tools.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.views.modelexplorer.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.views.properties.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.papyrus.xwt.feature" version="0.9.0.v201206131215"/>
+      <import feature="org.eclipse.e4.rcp" version="1.1.0.v20120521-2329-8yFTIGF3GGduEYqkQB9M3DKn"/>
+      <import plugin="org.modelica.mdt.breakpoint"/>
+      <import plugin="org.modelica.mdt.debug.core"/>
+      <import plugin="org.modelica.mdt.debug.ui"/>
       <import plugin="org.modelica.mdt.ui"/>
+      <import plugin="org.eclipse.papyrus.customization.palette"/>
+      <import plugin="org.eclipse.papyrus.infra.constraints"/>
+      <import plugin="org.eclipse.papyrus.infra.constraints.edit"/>
+      <import plugin="org.eclipse.papyrus.infra.constraints.editor"/>
+      <import plugin="org.eclipse.papyrus.infra.core.sasheditor"/>
+      <import plugin="org.eclipse.papyrus.infra.discovery"/>
+      <import plugin="org.eclipse.papyrus.infra.discovery.ui"/>
+      <import plugin="org.eclipse.papyrus.infra.discovery.ui.menu"/>
+      <import plugin="org.eclipse.papyrus.infra.emf.appearance"/>
+      <import plugin="org.eclipse.papyrus.infra.emf.diagram.common"/>
+      <import plugin="org.eclipse.papyrus.infra.emf.readonly"/>
+      <import plugin="org.eclipse.papyrus.infra.export"/>
+      <import plugin="org.eclipse.papyrus.infra.extendedtypes"/>
+      <import plugin="org.eclipse.papyrus.infra.extendedtypes.emf"/>
+      <import plugin="org.eclipse.papyrus.infra.gmfdiag.commands"/>
+      <import plugin="org.eclipse.papyrus.infra.gmfdiag.css.model"/>
+      <import plugin="org.eclipse.papyrus.infra.gmfdiag.dnd"/>
+      <import plugin="org.eclipse.papyrus.infra.gmfdiag.modelexplorer"/>
+      <import plugin="org.eclipse.papyrus.infra.gmfdiag.navigation"/>
+      <import plugin="org.eclipse.papyrus.infra.gmfdiag.outline"/>
+      <import plugin="org.eclipse.papyrus.infra.gmfdiag.properties"/>
+      <import plugin="org.eclipse.papyrus.infra.gmfdiag.widgets"/>
+      <import plugin="org.eclipse.papyrus.infra.hyperlink"/>
+      <import plugin="org.eclipse.papyrus.infra.onefile"/>
+      <import plugin="org.eclipse.papyrus.infra.queries.core"/>
+      <import plugin="org.eclipse.papyrus.infra.queries.core.configuration"/>
+      <import plugin="org.eclipse.papyrus.infra.queries.core.configuration.edit"/>
+      <import plugin="org.eclipse.papyrus.infra.services.controlmode"/>
+      <import plugin="org.eclipse.papyrus.infra.services.controlmode.history"/>
+      <import plugin="org.eclipse.papyrus.infra.services.markerlistener"/>
+      <import plugin="org.eclipse.papyrus.infra.services.resourceloading"/>
+      <import plugin="org.eclipse.papyrus.infra.services.resourceloading.preferences"/>
+      <import plugin="org.eclipse.papyrus.infra.services.validation"/>
+      <import plugin="org.eclipse.papyrus.infra.table.common"/>
+      <import plugin="org.eclipse.papyrus.infra.table.instance"/>
+      <import plugin="org.eclipse.papyrus.infra.table.menu"/>
+      <import plugin="org.eclipse.papyrus.infra.table.modelexplorer"/>
+      <import plugin="org.eclipse.papyrus.infra.table.properties"/>
+      <import plugin="org.eclipse.papyrus.infra.tools"/>
+      <import plugin="org.eclipse.papyrus.infra.widgets"/>
+      <import plugin="org.eclipse.papyrus.uml.alf"/>
+      <import plugin="org.eclipse.papyrus.uml.alf.ui"/>
+      <import plugin="org.eclipse.papyrus.uml.appearance"/>
+      <import plugin="org.eclipse.papyrus.uml.commands"/>
+      <import plugin="org.eclipse.papyrus.uml.controlmode.profile"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.common.groups"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.common.palette.customaction"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.communication"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.component"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.deployment"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.dnd"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.emftree"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.icons"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.menu"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.modelexplorer"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.navigation"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.package"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.paletteconfiguration"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.paletteconfiguration.edit"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.profile"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.sequence"/>
+      <import plugin="org.eclipse.papyrus.uml.diagram.usecase"/>
+      <import plugin="org.eclipse.papyrus.uml.documentation.profile"/>
+      <import plugin="org.eclipse.papyrus.uml.icons"/>
+      <import plugin="org.eclipse.papyrus.uml.import"/>
+      <import plugin="org.eclipse.papyrus.uml.modelexplorer.widgets"/>
+      <import plugin="org.eclipse.papyrus.uml.oclconstraintevaluation"/>
+      <import plugin="org.eclipse.papyrus.uml.pastemanager"/>
+      <import plugin="org.eclipse.papyrus.uml.resourceloading.profile"/>
+      <import plugin="org.eclipse.papyrus.uml.service.types"/>
+      <import plugin="org.eclipse.papyrus.uml.table.default"/>
+      <import plugin="org.eclipse.papyrus.uml.table.widgets.celleditors"/>
+      <import plugin="org.eclipse.papyrus.uml.templaterepository"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.collaborationuse.xtext"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.collaborationuse.xtext.ui"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.common.xtext"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.common.xtext.ui"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.connectionpointreference.xtext"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.connectionpointreference.xtext.ui"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.constraintwithessentialocl.xtext"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.message.xtext"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.message.xtext.ui"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.parameter.xtext"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.parameter.xtext.ui"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.property.xtext"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.property.xtext.ui"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.state.xtext"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.state.xtext.ui"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.stereotypeproperty.xtext"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.stereotypeproperty.xtext.ui"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.transition.xtext"/>
+      <import plugin="org.eclipse.papyrus.uml.textedit.transition.xtext.ui"/>
+      <import plugin="org.eclipse.papyrus.uml.tools.extendedtypes"/>
+      <import plugin="org.eclipse.papyrus.views.modelexplorer.resourceloading"/>
+      <import plugin="org.eclipse.papyrus.views.properties.model"/>
+      <import plugin="org.eclipse.papyrus.views.properties.model.edit"/>
+      <import plugin="org.eclipse.papyrus.views.properties.model.editor"/>
+      <import plugin="org.eclipse.papyrus.xwt"/>
    </requires>
 
Index: /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/dialogs/ScenarioBasedVerificationReportDialog.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/dialogs/ScenarioBasedVerificationReportDialog.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/dialogs/ScenarioBasedVerificationReportDialog.java	(revision 1632)
@@ -1248,5 +1248,5 @@
 			item.setData(data);
 
-			// Add clients (isMandatory, binding)
+			// Add clients
 			getClientItems(ci, item, VeM, requirement);
 			
Index: /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/dialogs/SelectScenariosAndRequirementsDialog.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/dialogs/SelectScenariosAndRequirementsDialog.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/dialogs/SelectScenariosAndRequirementsDialog.java	(revision 1632)
@@ -906,5 +906,5 @@
 					lineDelimiterString + 
 					"\nTest Scenario: '"+((NamedElement)testScenario).getName()+"'("+((NamedElement)testScenario).getQualifiedName()+")" +
-					getAdditionalModelsString(tsmc.getRequiredModels_testScenario(), tsmc, testScenario) 
+					getAdditionalModelsString(tsmc.getRequiredModels_scenario(), tsmc, testScenario) 
 					;
 			
@@ -1012,5 +1012,5 @@
 	private String getUnsatisfiedClients(String prefix, Element element, VeMScenarioReqCombinationsCreator tsmc){
 		String string = "";
-		String unsatisfiedClientsString = tsmc.getClientsDotPathAsString(tsmc.getUnsatisfiedRequiredClients(element));
+		String unsatisfiedClientsString = tsmc.getClientsDotPathAsString(tsmc.getUnsatisfiedMandatoryClients(element));
 		if (!unsatisfiedClientsString.trim().equals("")) {
 			string = prefix + "- unsatisfied required clients: " + "\n";
Index: /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/generators/CreatorValueBinding.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/generators/CreatorValueBinding.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/generators/CreatorValueBinding.java	(revision 1632)
@@ -88,5 +88,5 @@
 	 * even if the default value is set in its declaration.
 	 */
-	private HashSet<TreeObject> allRequiredClientsFound = new HashSet<TreeObject>();
+	private HashSet<TreeObject> allMandatoryClientsFound = new HashSet<TreeObject>();
 	
 	
@@ -229,6 +229,6 @@
 				
 				// add to required clients list
-				if (deriveCodeHelper.isRequiredClient()) {
-					allRequiredClientsFound.add(item);
+				if (deriveCodeHelper.isMandatoryClient()) {
+					allMandatoryClientsFound.add(item);
 					if (code == null) {
 						if ( !onlySimulate ) {
@@ -343,10 +343,10 @@
 	}
 
-	public void setAllRequiredClientsFound(HashSet<TreeObject> allRequiredClientsFound) {
-		this.allRequiredClientsFound = allRequiredClientsFound;
-	}
-
-	public HashSet<TreeObject> getAllRequiredClientsFound() {
-		return allRequiredClientsFound;
+	public void setAllMandatoryClientsFound(HashSet<TreeObject> allMandatoryClientsFound) {
+		this.allMandatoryClientsFound = allMandatoryClientsFound;
+	}
+
+	public HashSet<TreeObject> getAllMandatoryClientsFound() {
+		return allMandatoryClientsFound;
 	}
 	
Index: /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/generators/GeneratorVeMRequirementsBased.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/generators/GeneratorVeMRequirementsBased.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/generators/GeneratorVeMRequirementsBased.java	(revision 1632)
@@ -361,5 +361,5 @@
 		 * Determine if there were models for which no correct bindings could be generated
 		 */
-		HashSet<TreeObject> allMandClients = vbc.getAllRequiredClientsFound();
+		HashSet<TreeObject> allMandClients = vbc.getAllMandatoryClientsFound();
 		HashSet<TreeObject> allMandClientsWithPossibleBindins = vbc.getAllClientsWithPossibleBindingCodeDerivation();
 		
Index: /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/generators/GeneratorVeMScenariosBased.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/generators/GeneratorVeMScenariosBased.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/generators/GeneratorVeMScenariosBased.java	(revision 1632)
@@ -488,8 +488,11 @@
 					HashSet<Element> requirements = tsmc.getRequirements();
 					for (Element requirement : requirements) {
-						if (tsmc.getUnsatisfiedRequiredClients(requirement) != null) {
+
+						//if NOT all mandatory are satisfied 
+						if (tsmc.getUnsatisfiedMandatoryClients(requirement) != null) {
 							requirementsDiscarded.add(requirement);
 						}
-						else {
+						// if requirement has clients at all
+						else if (tsmc.getModelClients(requirement) != null) {
 							requirementsToBeInstantiated.add(requirement);
 						}
@@ -765,5 +768,5 @@
 						 * one provider used in the combination.
 						 */
-						createAdditionalModels(simulationModel, tsmc.getAdditionalTestScenarioModels(true), 
+						createAdditionalModels(simulationModel, tsmc.getAdditionalScenarioModels(true), 
 								Constants.verificationScenarioPropertyNamePrefix + Constants.additionalModelPrefix);
 						
@@ -982,5 +985,5 @@
 						 * Determine if there were models for which no correct bindings could be generated
 						 */
-						HashSet<TreeObject> allMandClients = vbc.getAllRequiredClientsFound();
+						HashSet<TreeObject> allMandClients = vbc.getAllMandatoryClientsFound();
 						HashSet<TreeObject> allMandClientsWithPossibleBindings = vbc.getAllClientsWithPossibleBindingCodeDerivation();
 						HashSet<TreeObject> allMandClientsWithUserDecisionRequired = vbc.getAllClientsWithUserDecisionRequiredForCodeDerivation();
Index: /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/structures/VeMReqCombinationsCreator.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/structures/VeMReqCombinationsCreator.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/structures/VeMReqCombinationsCreator.java	(revision 1632)
@@ -389,6 +389,6 @@
 		vbc.updateAllBindings(valueMediatorsPackage, null, treeParentToStartTheCheckOn, virtualInstantiationTreeRoot, false, true, false, true);
 		
-		if ( vbc.getAllRequiredClientsFound().size() > 0 
-				&& !vbc.getAllClientsWithPossibleBindingCodeDerivation().containsAll(vbc.getAllRequiredClientsFound())) {
+		if ( vbc.getAllMandatoryClientsFound().size() > 0 
+				&& !vbc.getAllClientsWithPossibleBindingCodeDerivation().containsAll(vbc.getAllMandatoryClientsFound())) {
 			allRequiredClientsAreSatisfied = false;
 		}
@@ -396,5 +396,5 @@
 		// Collect all mandatory clients that are not satisfied.
 		HashSet<TreeObject> unsatisfiedRequiredClients = new HashSet<TreeObject>();
-		unsatisfiedRequiredClients.addAll(vbc.getAllRequiredClientsFound());
+		unsatisfiedRequiredClients.addAll(vbc.getAllMandatoryClientsFound());
 		unsatisfiedRequiredClients.removeAll(vbc.getAllClientsWithPossibleBindingCodeDerivation());
 
Index: /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/structures/VeMScenarioReqCombinationsCreator.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/structures/VeMScenarioReqCombinationsCreator.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.helper/src/org/openmodelica/modelicaml/helper/structures/VeMScenarioReqCombinationsCreator.java	(revision 1632)
@@ -16,4 +16,5 @@
 import org.openmodelica.modelicaml.common.instantiation.TreeObject;
 import org.openmodelica.modelicaml.common.instantiation.TreeParent;
+import org.openmodelica.modelicaml.common.services.ModelicaMLServices;
 import org.openmodelica.modelicaml.helper.datacollection.VerificationScenariosCollector;
 import org.openmodelica.modelicaml.helper.generators.CreatorValueBinding;
@@ -44,5 +45,5 @@
 	 * verification scenario that is used to stimulate the system model
 	 */
-	private Element testScenario;
+	private Element scenario;
 
 
@@ -51,5 +52,5 @@
 	 * All required models that are referenced (directly or indirectly) by the verification scenario model 
 	 */
-	private HashSet<Element> requiredModels_testScenario = new HashSet<Element>();
+	private HashSet<Element> requiredModels_scenario = new HashSet<Element>();
 	
 	/*
@@ -93,6 +94,10 @@
 
 	// contains tree objects (instantiation roots of models) with all mandatory clients that are NOT satisfied.
-	private HashMap<TreeParent, HashSet<TreeObject>> requiredClients_unsatisfied = new HashMap<TreeParent, HashSet<TreeObject>>();
-
+	private HashMap<TreeParent, HashSet<TreeObject>> mandatoryClients_unsatisfied = new HashMap<TreeParent, HashSet<TreeObject>>();
+
+	// models and their clients.
+	private HashMap<TreeParent, HashSet<TreeObject>>  modelClients = new HashMap<TreeParent, HashSet<TreeObject>> ();
+	
+	
 	// collector of verification data (scenarios, requirements etc.)
 	private VerificationScenariosCollector collector;
@@ -114,5 +119,5 @@
 	
 	public VeMScenarioReqCombinationsCreator(Class systemModel, 
-			Class testScenario, 
+			Class scenario, 
 			HashSet<Element> requirements,
 			Package valueMediatorsPackage,
@@ -125,5 +130,5 @@
 		
 		this.systemModel = systemModel;
-		this.testScenario = testScenario;
+		this.scenario = scenario;
 		this.requirements = requirements;
 		this.valueMediatorsPackage = valueMediatorsPackage;
@@ -146,10 +151,10 @@
 		 */
 		initialSetOfModels.add(systemModel);
-		initialSetOfModels.add(testScenario);
+		initialSetOfModels.add(scenario);
 		initialSetOfModels.addAll(requirements);
 		
 		// collect all models that are required in addition (deep search)
 		requiredModels_systemModel.addAll(findAdditionModels(systemModel));
-		requiredModels_testScenario.addAll(findAdditionModels(testScenario));
+		requiredModels_scenario.addAll(findAdditionModels(scenario));
 		
 		for (Element requirement : requirements) {
@@ -306,22 +311,32 @@
 		// Note, isDiscarded is false by default. There is no need to set it to false.
 		TreeParent systemModelInstantiationTreeRoot = modelToItsInstantiation.get(this.systemModel).getTreeRoot();
-		TreeParent testScenarioInstantiationTreeRoot = modelToItsInstantiation.get(this.testScenario).getTreeRoot();
-		
-		if (systemModelInstantiationTreeRoot != null && testScenarioInstantiationTreeRoot != null) {
-			if (!areAllRequiredClientsSatisfied(virtualInstantiationTreeRoot, systemModelInstantiationTreeRoot)) {
-
+		TreeParent scenarioInstantiationTreeRoot = modelToItsInstantiation.get(this.scenario).getTreeRoot();
+		
+		if (systemModelInstantiationTreeRoot != null && scenarioInstantiationTreeRoot != null) {
+			
+			if (!areAllMandatoryClientsSatisfied(virtualInstantiationTreeRoot, systemModelInstantiationTreeRoot)) {
+
+				// discard this combination
 				setDiscarded(true);
+				
 				String message = "DISCARDED(02): The combination " +
-						"\n   - Scenario: '" + ((NamedElement)this.testScenario).getQualifiedName() + "'" +
+						"\n   - Scenario: '" + ((NamedElement)this.scenario).getQualifiedName() + "'" +
 						"\n   - System Model: '" + ((NamedElement)this.systemModel).getQualifiedName() + "'" +
 						"\nis discarded because the following mandatory clients of the system model are not satisfied: " +
-						"\n" + getClientsDotPathAsString(requiredClients_unsatisfied.get(systemModelInstantiationTreeRoot));
+						"\n" + getClientsDotPathAsString(mandatoryClients_unsatisfied.get(systemModelInstantiationTreeRoot));
 				addToLog(message);
 			}
-			if (!isAtLeastOneProviderUsed(virtualInstantiationTreeRoot, testScenarioInstantiationTreeRoot)) {
-				
+			/*
+			 * TODO: What if all clients of the system model are satisfied by additional models, which in 
+			 * turn are satisfied by scenarios? Then the code below would discard this combination.
+			 * Should we consider this case?
+			 */
+			if (!isAtLeastOneProviderUsed(virtualInstantiationTreeRoot, scenarioInstantiationTreeRoot)) {
+				
+				// discard this combination
 				setDiscarded(true);
+				
 				String message = "DISCARDED(03): The combination " +
-						"\n   - Scenario: '" + ((NamedElement)this.testScenario).getQualifiedName() + "'" +
+						"\n   - Scenario: '" + ((NamedElement)this.scenario).getQualifiedName() + "'" +
 						"\n   - System Model: '" + ((NamedElement)this.systemModel).getQualifiedName() + "'" +
 						"\nis discarded because none of the scenario providers is used to stimulate the model. ";
@@ -346,14 +361,34 @@
 		
 		for (Element requirement : requirements) {
+			
 			TreeParent requirementInstantiationTreeRootItem = modelToItsInstantiation.get(requirement).getTreeRoot();
+			
 			if (requirementInstantiationTreeRootItem != null) {
+
 				// this method validates and collects the unsatisfied mandatory clients at the same time.
-				areAllRequiredClientsSatisfied(virtualInstantiationTreeRoot, requirementInstantiationTreeRootItem);
+				areAllMandatoryClientsSatisfied(virtualInstantiationTreeRoot, requirementInstantiationTreeRootItem);
+				
+				/*
+				 * check if if requirement has clients at all and all mandatory are satisfied
+				 */
 				
 				// add unsatisfied mandatory clients to log
-				if (getUnsatisfiedRequiredClients(requirement) != null) {
-					String message = "PROBLEM(05): Requirement " + ((NamedElement)requirement).getQualifiedName() + "'" +
+				HashSet<TreeObject> unsatisfiedClients = getUnsatisfiedMandatoryClients(requirement); 
+				if (unsatisfiedClients != null) {
+					String message = "PROBLEM(05): Requirement " 
+							+ ModelicaMLServices.getRequirementID(requirement) + ": " 
+							+ ModelicaMLServices.getName(requirement) 
+							+ " (" + ((NamedElement)requirement).getQualifiedName() + ")" +
 					"\n has the following mandatory clients which are not satisfied: " +
-					"\n" +getClientsDotPathAsString(getUnsatisfiedRequiredClients(requirement));
+					"\n" +getClientsDotPathAsString(unsatisfiedClients);
+					
+					addToLog(message);
+				}
+				else if (getModelClients(requirement) == null) {
+					String message = "PROBLEM(05.1): Requirement " 
+							+ ModelicaMLServices.getRequirementID(requirement) + ": " 
+							+ ModelicaMLServices.getName(requirement) 
+							+ " (" + ((NamedElement)requirement).getQualifiedName() + ")" +
+					"\n has no clients at all.";
 					
 					addToLog(message);
@@ -400,8 +435,9 @@
 	
 	
-	private boolean areAllRequiredClientsSatisfied(TreeParent virtualInstantiationTreeRoot, TreeParent treeParentToStartTheCheckOn){
+	private boolean areAllMandatoryClientsSatisfied(TreeParent virtualInstantiationTreeRoot, TreeParent treeParentToStartTheCheckOn){
 		
 		/* 
-		 * Get the list of clients for which the code could be derived (even if a user interaction would be necessary) 
+		 * Get the list of clients for which the code could be derived 
+		 * (even if a user interaction would be necessary) 
 		*/
 		CreatorValueBinding vbc = new CreatorValueBinding();
@@ -409,29 +445,84 @@
 		// pass the pre-collected mediators in oder to avoid searching once again 
 		vbc.setAllMediators(collector.getAllMediators()); 
+		
+		
+		boolean allMandatoryClientsAreSatisfied = false;
 		
 		/* Note, the updateAllBindings() is called with the last argument simulateOnly = true  
 		 * so that no modifications are created in components because we only want to analyze possible bindings.
 		 */
-		boolean allRequiredClientsAreSatisfied = true;
-		
 		// TODO: check the performance 
 		vbc.updateAllBindings(valueMediatorsPackage, null, treeParentToStartTheCheckOn, virtualInstantiationTreeRoot, false, true, false, true);
 		
-		if ( vbc.getAllRequiredClientsFound().size() > 0 
-				&& !vbc.getAllClientsWithPossibleBindingCodeDerivation().containsAll(vbc.getAllRequiredClientsFound())) {
-			allRequiredClientsAreSatisfied = false;
+		/*
+		 * If there are no clients at all: This case is considered 
+		 * being not a valid combination.
+		 */
+		HashSet<TreeObject> allClients = vbc.getAllClientsFound();  
+		
+		if (allClients == null || allClients.size() == 0) {
+			return false;
+		}
+		/*
+		 * Collect all models that have clients in order to be able to
+		 * determine if, for example, a requirement should be discarded because it has no clients at all.  
+		 */
+		else if (allClients != null){
+			modelClients.put(treeParentToStartTheCheckOn, allClients);
+		}
+		
+
+		// check if all mandatory clients are satisfied
+		if ( vbc.getAllMandatoryClientsFound().size() > 0 
+				&& vbc.getAllClientsWithPossibleBindingCodeDerivation().containsAll(vbc.getAllMandatoryClientsFound())) {
+			allMandatoryClientsAreSatisfied = true;
+		}
+		else if (vbc.getAllClientsFound().size() > 0) {
+			/*
+			 * If there are optional clients then we conclude that all mandatory are satisfied.
+			 * After that we will check of at least one client is used from the scenario. 
+			 * This is used in order to avoid rejecting of combinations in which 
+			 * the system model has only optional clients. 
+			 */
+			allMandatoryClientsAreSatisfied = true;
 		}
 		
 		// Collect all mandatory clients that are not satisfied.
 		HashSet<TreeObject> unsatisfiedRequiredClients = new HashSet<TreeObject>();
-		unsatisfiedRequiredClients.addAll(vbc.getAllRequiredClientsFound());
+		unsatisfiedRequiredClients.addAll(vbc.getAllMandatoryClientsFound());
 		unsatisfiedRequiredClients.removeAll(vbc.getAllClientsWithPossibleBindingCodeDerivation());
 
 		if (unsatisfiedRequiredClients.size() > 0 ) {
-			requiredClients_unsatisfied.put(treeParentToStartTheCheckOn, unsatisfiedRequiredClients);
-		}
-		
-		return allRequiredClientsAreSatisfied;
-	}
+			mandatoryClients_unsatisfied.put(treeParentToStartTheCheckOn, unsatisfiedRequiredClients);
+		}
+		
+		if (!allMandatoryClientsAreSatisfied) {
+			System.err.println("HIER");
+		}
+		
+		return allMandatoryClientsAreSatisfied;
+	}
+	
+	
+//	private boolean hasClients(TreeParent virtualInstantiationTreeRoot, TreeParent treeParentToStartTheCheckOn){
+//		
+//		/* 
+//		 * Get the list of clients for which the code could be derived 
+//		 * (even if a user interaction would be necessary) 
+//		*/
+//		CreatorValueBinding vbc = new CreatorValueBinding();
+//		
+//		// pass the pre-collected mediators in oder to avoid searching once again 
+//		vbc.setAllMediators(collector.getAllMediators()); 
+//		
+//		
+//		/* Note, the updateAllBindings() is called with the last argument simulateOnly = true  
+//		 * so that no modifications are created in components because we only want to analyze possible bindings.
+//		 */
+//		// TODO: check the performance 
+//		vbc.updateAllBindings(valueMediatorsPackage, null, treeParentToStartTheCheckOn, virtualInstantiationTreeRoot, false, true, false, true);
+//		
+//		return vbc.getAllClientsFound().size() > 0;
+//	}
 	
 	
@@ -481,10 +572,10 @@
 	}
 	
-	public HashSet<Element> getAdditionalTestScenarioModels(boolean prune){
+	public HashSet<Element> getAdditionalScenarioModels(boolean prune){
 		if (!prune) {
-			return this.requiredModels_testScenario;
+			return this.requiredModels_scenario;
 		}
 		HashSet<Element> additionalModels = new HashSet<Element>();
-		for (Element additionalModel : this.requiredModels_testScenario) {
+		for (Element additionalModel : this.requiredModels_scenario) {
 			TreeParent additionalModelInstantiation = this.modelToItsInstantiation.get(additionalModel).getTreeRoot();
 			if (additionalModelInstantiation != null) {
@@ -530,10 +621,10 @@
 	// Utls **********************************************************************
 	
-	public HashSet<TreeObject> getUnsatisfiedRequiredClients(Element model){
+	public HashSet<TreeObject> getUnsatisfiedMandatoryClients(Element model){
 		if (model != null) {
 			TreeParent modelInstantiation = modelToItsInstantiation.get(model).getTreeRoot();
 			
 			if (modelInstantiation != null) {
-				HashSet<TreeObject> unsatisfiedClients = requiredClients_unsatisfied.get(modelInstantiation);
+				HashSet<TreeObject> unsatisfiedClients = mandatoryClients_unsatisfied.get(modelInstantiation);
 
 				if (unsatisfiedClients != null && unsatisfiedClients.size() > 0 ) {
@@ -545,4 +636,20 @@
 	}
 	
+	
+	public HashSet<TreeObject> getModelClients(Element model) {
+		if (model != null) {
+			TreeParent modelInstantiation = modelToItsInstantiation.get(model).getTreeRoot();
+		
+			if (modelInstantiation != null) {
+				HashSet<TreeObject> allClients = modelClients.get(modelInstantiation);
+
+				if (allClients != null && allClients.size() > 0 ) {
+					return allClients;
+				}
+			}
+		}
+		return null;
+	}
+
 	
 	
@@ -618,5 +725,5 @@
 		"--------------------------------------------------- \n" +
 		"Log for the combination:" +
-			"\n   - Scenario '" + ((NamedElement)this.testScenario).getQualifiedName() + "'" +
+			"\n   - Scenario '" + ((NamedElement)this.scenario).getQualifiedName() + "'" +
 			"\n   - System Model '" + ((NamedElement)this.systemModel).getQualifiedName() + "'" +
 			"\n";
@@ -634,5 +741,5 @@
 	
 	public Element getTestScenario() {
-		return testScenario;
+		return scenario;
 	}
 	
@@ -645,6 +752,6 @@
 	}
 
-	public HashSet<Element> getRequiredModels_testScenario() {
-		return requiredModels_testScenario;
+	public HashSet<Element> getRequiredModels_scenario() {
+		return requiredModels_scenario;
 	}
 
@@ -684,5 +791,5 @@
 
 	public HashMap<TreeParent, HashSet<TreeObject>> getRequiredClients_unsatisfied() {
-		return requiredClients_unsatisfied;
+		return mandatoryClients_unsatisfied;
 	}
 
@@ -712,3 +819,4 @@
 		return alwaysInclude;
 	}
+
 }
Index: /trunk/modelicaml/org.openmodelica.modelicaml.modelica.importer/src/org/openmodelica/modelicaml/modelica/importer/helper/ModelicaMLElementsCreator.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.modelica.importer/src/org/openmodelica/modelicaml/modelica/importer/helper/ModelicaMLElementsCreator.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.modelica.importer/src/org/openmodelica/modelicaml/modelica/importer/helper/ModelicaMLElementsCreator.java	(revision 1632)
@@ -702,19 +702,23 @@
 			@Override
 			protected void doExecute() {
-				createdElement = sourceClass.createDependency(targetClass);
-				
-				Stereotype s = createdElement.getApplicableStereotype(StereotypeQname);
-				if (s != null) {
-					createdElement.applyStereotype(s);
-					if (treeObject instanceof ImportRelationItem) {
-						ImportRelationItem importRelationItem = (ImportRelationItem) treeObject;
-						((Dependency)createdElement).setName(importRelationItem.getSourceQname() + " imports " + importRelationItem.getTargetQname());
-						createdElement.setValue(s, Constants.propertyName_alias, importRelationItem.getAlias());
-					}
-				}
-				else {
-					addToLog("Could not apply the import stereotype to the element '" + treeObject.getQName() + "'");
-				}
-				
+				
+				// prevent cyclic dependencies
+				if (sourceClass.equals(targetClass)) {
+					
+					createdElement = sourceClass.createDependency(targetClass);
+					
+					Stereotype s = createdElement.getApplicableStereotype(StereotypeQname);
+					if (s != null) {
+						createdElement.applyStereotype(s);
+						if (treeObject instanceof ImportRelationItem) {
+							ImportRelationItem importRelationItem = (ImportRelationItem) treeObject;
+							((Dependency)createdElement).setName(importRelationItem.getSourceQname() + " imports " + importRelationItem.getTargetQname());
+							createdElement.setValue(s, Constants.propertyName_alias, importRelationItem.getAlias());
+						}
+					}
+					else {
+						addToLog("Could not apply the import stereotype to the element '" + treeObject.getQName() + "'");
+					}
+				}
 			}
 		};
@@ -762,5 +766,5 @@
 				Element target = treeBuilder.getTypeElement(extendsRelation.getTargetQname());
 				
-				TreeParent owningClass = extendsRelation.getParent();
+				TreeParent owningClassItem = extendsRelation.getParent();
 				
 				/*
@@ -769,6 +773,6 @@
 				 */
 				if (target instanceof Classifier 
-						&& !extendsRelation.getTargetQname().equals(extendsRelation.getSourceQname())
-						&& !extendsRelation.getTargetQname().equals(owningClass.getQName())
+						&& !extendsRelation.getTargetQname().equals(extendsRelation.getSourceQname()) 
+						&& !extendsRelation.getTargetQname().equals(owningClassItem.getQName()) // TODO: this should actually be the same like extendsRelation.getSourceQname() 
 						) {
 //					System.out.println("Creating extends relation: " + extendsRelationTreeObject.getSourceQname() + " -> " + extendsRelation.getTargetQname());
Index: /trunk/modelicaml/org.openmodelica.modelicaml.modelica.importer/src/org/openmodelica/modelicaml/modelica/importer/model/TreeBuilder.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.modelica.importer/src/org/openmodelica/modelicaml/modelica/importer/model/TreeBuilder.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.modelica.importer/src/org/openmodelica/modelicaml/modelica/importer/model/TreeBuilder.java	(revision 1632)
@@ -313,5 +313,4 @@
 			else {
 				// Create Import relations nodes
-//				System.err.println("Creating Import Relations in " + classQName);
 				createdItems.addAll(createImportRelationNodes(treeParent, classQName));
 				
@@ -320,6 +319,4 @@
 				if (inheritedClasses.size() > 0) {
 					for (String inheritedClassQName : inheritedClasses) {
-						
-//						System.err.println("Creating ExtendsRelationItem in " + classQName);
 						
 						setMonitorTaskName("Creating extends relations in " + inheritedClassQName);
@@ -1195,7 +1192,5 @@
 							ModelicaModelProxiesCollector pc = new ModelicaModelProxiesCollector();
 							pc.setStereotypeQName(Constants.stereotypeQName_ModelicaModelProxy);
-//							pc.collectElementsFromModel(root, Constants.stereotypeQName_ModelicaModelProxy);
 							pc.collectElementsFromModel(root);
-		//					proxies = pc.getElements();
 							proxies.addAll(pc.getElements());
 							
@@ -1208,5 +1203,4 @@
 							proxiesCopy.addAll(proxies);
 							
-		//					for (Element proxy : proxies) {
 							for (Element proxy : proxiesCopy) {
 								if (proxy instanceof NamedElement) {
@@ -1463,11 +1457,11 @@
 	}
 
-	public void setErrorLog(String errorLog) {
-		this.errorLog = errorLog;
-	}
-
-	private void addToErrorLog(String msg){
-		this.errorLog += "\n\n" + msg;
-	}
+//	public void setErrorLog(String errorLog) {
+//		this.errorLog = errorLog;
+//	}
+//
+//	private void addToErrorLog(String msg){
+//		this.errorLog += "\n\n" + msg;
+//	}
 	
 }
Index: /trunk/modelicaml/org.openmodelica.modelicaml.modelica.importer/src/org/openmodelica/modelicaml/modelica/importer/views/ModelicaOMCCodeViewer.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.modelica.importer/src/org/openmodelica/modelicaml/modelica/importer/views/ModelicaOMCCodeViewer.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.modelica.importer/src/org/openmodelica/modelicaml/modelica/importer/views/ModelicaOMCCodeViewer.java	(revision 1632)
@@ -88,4 +88,5 @@
 import org.openmodelica.modelicaml.modelica.importer.model.TreeObject;
 import org.openmodelica.modelicaml.modelica.importer.model.TreeParent;
+import org.openmodelica.modelicaml.modelica.importer.model.Utilities;
 
 public class ModelicaOMCCodeViewer extends ViewPart {
@@ -417,6 +418,6 @@
 			if (!viewer.getExpandedState(obj)) {
 				actionExpandCollapse.setText("Expand");
-//				actionExpandCollapse.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_ADD));
 				actionExpandCollapse.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/expand.gif"));
+
 				// Disable expand action when the reload sub tree job is running
 				if (reloadSubTreeJob.getState() == Job.RUNNING) {
@@ -429,5 +430,4 @@
 			else {
 				actionExpandCollapse.setText("Collapse");
-//				actionExpandCollapse.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_ELCL_COLLAPSEALL));
 				actionExpandCollapse.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/collapse.gif"));
 
@@ -620,6 +620,5 @@
 								IProject iProject = root.getProject(projectName);
 
-//								treeBuilder.deleteOMCLoadingMarkers(iProject);
-								org.openmodelica.modelicaml.modelica.importer.model.Utilities.deleteOMCLoadingMarkers(iProject);
+								Utilities.deleteOMCLoadingMarkers(iProject);
 								
 								// build tree
@@ -640,103 +639,8 @@
 					}
 				}
-				
-				//******************************** Using ProgressMonitor
-//				try {
-//					new ProgressMonitorDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()).run(true, true, treeBuilder);
-//
-//					Object[] expandedElements = viewer.getExpandedElements();
-//					TreePath[] expandedTreePaths = viewer.getExpandedTreePaths();
-//					
-//					TreeObject[] children = treeRoot.getChildren();
-//					for (int i = 0; i < children.length; i++) {
-//						treeRoot.removeChild(children[i]);
-//					}
-//					
-//					treeBuilder.buildTree(treeRoot);
-//					
-//					if (treeRoot.hasChildren()) {
-//						actionSynchronize.setEnabled(true);
-//					}
-//					else {
-//						actionSynchronize.setEnabled(false);
-//					}
-//
-//					viewer.setInput(getViewSite());
-//					
-//					viewer.setExpandedElements(expandedElements);
-//					viewer.setExpandedTreePaths(expandedTreePaths);
-//
-//				} catch (InvocationTargetException e) {
-//					// TODO Auto-generated catch block
-//					e.printStackTrace();
-//				} catch (InterruptedException e) {
-//					// TODO Auto-generated catch block
-//					e.printStackTrace();
-//				}
-				
-
-				//************************** Using a GUI Job
-//				UmlModel umlModel = UmlUtils.getUmlModel();
-//				Object ModelicaMLRoot = null;
-//				try {
-//					ModelicaMLRoot = umlModel.lookupRoot();
-//				} catch (NotFoundException e) {
-//					// TODO Auto-generated catch block
-//					e.printStackTrace();
-//				}
-//				
-//				ServicesRegistry serviceRegistry = null;
-//				TransactionalEditingDomain editingDomain = null;
-//				try {
-//					serviceRegistry = ServiceUtilsForActionHandlers.getInstance().getServiceRegistry();
-//					editingDomain = ServiceUtils.getInstance().getTransactionalEditingDomain(serviceRegistry);
-//				} catch (ServiceException e) {
-//					// TODO Auto-generated catch block
-//					e.printStackTrace();
-//				}
-//				
-//				
-//				if (serviceRegistry != null && editingDomain != null && ModelicaMLRoot != null && umlModel != null) {
-//					UIJob UIjob = new UIJob("Loading Modelica models ...") {
-//						public IStatus runInUIThread(IProgressMonitor monitor) {
-//							
-//							Object[] expandedElements = viewer.getExpandedElements();
-//							TreePath[] expandedTreePaths = viewer.getExpandedTreePaths();
-//							
-//							TreeObject[] children = treeRoot.getChildren();
-//							for (int i = 0; i < children.length; i++) {
-//								treeRoot.removeChild(children[i]);
-//							}
-//
-//							treeBuilder.buildTree(treeRoot);
-//							
-//							if (treeRoot.hasChildren()) {
-//								actionSynchronize.setEnabled(true);
-//							}
-//							else {
-//								actionSynchronize.setEnabled(false);
-//							}
-//
-//							viewer.setInput(getViewSite());
-//							
-//							viewer.setExpandedElements(expandedElements);
-//							viewer.setExpandedTreePaths(expandedTreePaths);
-//							
-//							return Status.OK_STATUS;
-//						}
-//					};
-//					UIjob.setUser(true);
-//					UIjob.schedule();
-//				}
-//				else {
-//					MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Invocation error", "Could not load Modelica models.");
-//				}
 			}
 		};
 		actionReload.setText("(Re)Load All");
 		actionReload.setToolTipText("(Re)Load All");
-//		actionReload.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_DEF_VIEW));
-//		actionReload.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/load.png"));
-//		actionReload.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/import_obj.gif"));
 		actionReload.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/import_resource_wiz.gif"));
 		
@@ -747,5 +651,4 @@
 				for (int i = 0; i < children.length; i++) {
 					viewer.collapseToLevel(children[i], AbstractTreeViewer.ALL_LEVELS);
-//					viewer.collapseToLevel(children[i], 1); // collapse current element in the tree
 				}			
 			}
@@ -789,5 +692,4 @@
 		actionRefreshAndValidate.setText("Validate All");
 		actionRefreshAndValidate.setToolTipText("Validate All");
-//		actionRefresh.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/reload.png"));
 		actionRefreshAndValidate.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/validate_co.gif"));
 		actionRefreshAndValidate.setEnabled(false);
@@ -820,6 +722,6 @@
 				IProject iProject = root.getProject(projectName);
 
-//				treeBuilder.deleteOMCLoadingMarkers(iProject);
-				org.openmodelica.modelicaml.modelica.importer.model.Utilities.deleteOMCLoadingMarkers(iProject);
+				Utilities.deleteOMCLoadingMarkers(iProject);
+				
 				// collapse the tree root and refresh
 				viewer.setExpandedState(treeRoot, false);
@@ -1018,87 +920,4 @@
 			public void run() {
 				
-				//********** with ProgressMonitor
-//				try {
-//					new ProgressMonitorDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()).run(true, true,
-//							new IRunnableWithProgress() {
-//								@Override
-//								public void run(final IProgressMonitor monitor)
-//										throws InvocationTargetException,
-//										InterruptedException {
-//									monitor.beginTask("Creating ModelicaML Proxies ...",IProgressMonitor.UNKNOWN);
-//									
-//									for (int total = 1; total < 2; total++) {
-//										if (monitor.isCanceled())
-//											throw new OperationCanceledException();
-//										Thread.sleep(1000l); //TODO [20100506] CAN BE DELETED
-//										
-//										switch (total) {
-//										case 1:
-//											monitor.setTaskName("Creating ModelicaML Elements ...");
-//											getSite().getShell().getDisplay().asyncExec(new Runnable() {
-//												public void run() {
-//													ModelicaMLElementsCreator ec = new ModelicaMLElementsCreator();
-//													TreeObject[] modelicaRoots = treeRoot.getChildren();
-//													for (int i = 0; i < modelicaRoots.length; i++) {
-//														TreeObject treeObject = modelicaRoots[i];
-//														EObject modelicaRoot = ec.createProxyRoot(treeObject.getName());
-//														
-//														if (modelicaRoot instanceof Element && treeObject instanceof TreeParent) {
-//															ec.createClasses((Element)modelicaRoot, (TreeParent)treeObject, false);
-//														}
-//													}
-//												}
-//											});
-//											monitor.worked(1);
-//											break;
-//										case 2:
-//											monitor.setTaskName("Step: " + total + ", Creating ModelicaML Elements ...");
-//											getSite().getShell().getDisplay().asyncExec(new Runnable() {
-//												public void run() {
-//
-//												}
-//											});
-//											monitor.worked(2);
-//											break;
-//										default:
-//											break;
-//										}
-//									}
-//									monitor.done();
-//								}
-//							});
-//				} catch (InvocationTargetException e) {
-//					e.printStackTrace();
-//				} catch (InterruptedException e) {
-//					System.out.println("InterruptedException");
-//				} catch (OperationCanceledException e){
-//					System.out.println("OperationCanceledException");
-//				}
-								
-				
-				//***************** simple
-//				ModelicaMLElementsCreator ec = new ModelicaMLElementsCreator();
-//				TreeObject[] modelicaRoots = treeRoot.getChildren();
-//				for (int i = 0; i < modelicaRoots.length; i++) {
-//					TreeObject treeObject = modelicaRoots[i];
-//					EObject modelicaRoot = ec.createProxyRoot(treeObject.getName());
-//					
-//					if (modelicaRoot instanceof Element && treeObject instanceof TreeParent) {
-//						try {
-//							new ProgressMonitorDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()).run(true, true, ec);
-//							ec.createClasses((Element)modelicaRoot, (TreeParent)treeObject, false);
-//						} catch (InvocationTargetException e) {
-//							// TODO Auto-generated catch block
-//							e.printStackTrace();
-//						} catch (InterruptedException e) {
-//							// TODO Auto-generated catch block
-//							e.printStackTrace();
-//						}
-//						
-////						ec.createClasses((Element)modelicaRoot, (TreeParent)treeObject, false);
-//					}
-//				}
-				
-				
 				if (!EditorServices.isVisiblePapyrusModelExplorerView()) {
 					MessageDialog.openError(getSite().getShell(), "Modelica Model Proxies Synchronization Error", 
@@ -1162,16 +981,7 @@
 										
 					if (createProxiesAfterLoadingModelicaClasses) {
+
 						// no dialog. use default values
-						
-//							// default values
-//							boolean applyProxyStereotype = true;
-//							boolean update = true;
-//							boolean deleteNotUsedProxies = false;
-						
 						Job job = createSynchJob(
-//								serviceRegistry, 
-//								editingDomain, 
-//								umlModel, 
-//								ModelicaMLRoot, 
 								applyProxyStereotype, 
 								update, 
@@ -1221,31 +1031,9 @@
 						}
 					}
-						
-//							UIJob UIjob = new UIJob("Create ModelicaML Proxies ...") {
-//							
-//							public IStatus runInUIThread(IProgressMonitor monitor) {
-//								ModelicaMLElementsCreator ec = new ModelicaMLElementsCreator(serviceRegistry, editingDomain, umlModel, ModelicaMLRoot);
-//								TreeObject[] modelicaRoots = treeRoot.getChildren();
-//								for (int i = 0; i < modelicaRoots.length; i++) {
-//									
-//									TreeObject treeObject = modelicaRoots[i];
-//									
-//									EObject modelicaRoot = ec.createProxyRoot(treeObject.getName());
-//									ec.createClasses((Element)modelicaRoot, (TreeParent)treeObject, false);
-//								}
-//								return Status.OK_STATUS;
-//							}
-//							
-//							
-//						};
-//						UIjob.setUser(true);
-//						UIjob.schedule();
-					}
+				}
 			}
 		};
 		actionSynchronize.setText("Synchronize All");
 		actionSynchronize.setToolTipText("Synchronize All");
-//		actionSynchronize.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_ELCL_SYNCED));
-//		actionSynchronize.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/compare.png"));
 		actionSynchronize.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/copy_edit.gif"));
 		actionSynchronize.setEnabled(false);
@@ -1267,6 +1055,4 @@
 		actionLoadSubTree.setText("(Re)Load Sub-Tree");
 		actionLoadSubTree.setToolTipText("(Re)Load Sub-Tree");
-//		actionLoadSubTree.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/load.png"));
-//		actionLoadSubTree.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/import_obj.gif"));
 		actionLoadSubTree.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/import_resource_wiz.gif"));
 		
@@ -1287,5 +1073,4 @@
 		actionSynchronizeSubTree.setText("Synchronize Sub-Tree");
 		actionSynchronizeSubTree.setToolTipText("Synchronize Sub-Tree");
-//		actionSynchronizeSubTree.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/compare.png"));
 		actionSynchronizeSubTree.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/copy_edit.gif"));
 		
@@ -1666,6 +1451,5 @@
 					ec.deleteInvalidProxyElements(treeObject.getQName());
 					
-//					treeBuilder.deleteProxyValidationMarkers(getProject(), treeObject.getQName());
-					org.openmodelica.modelicaml.modelica.importer.model.Utilities.deleteProxyValidationMarkers(getProject(), treeObject.getQName());
+					Utilities.deleteProxyValidationMarkers(getProject(), treeObject.getQName());
 				}
 				
@@ -1676,5 +1460,4 @@
 				if (project != null && treeObject.getModelicaMLProxy() != null) {
 					treeBuilder.validateProxies(project, (TreeParent)treeObject);
-//					System.err.println("Validating sub-tree starting with " + parent.getName());
 				}
 				else {
@@ -1729,5 +1512,4 @@
 					if (project != null && parent.getModelicaMLProxy() != null) {
 						treeBuilder.validateProxies(project, parent);
-//						System.err.println("Validating sub-tree starting with " + parent.getName());
 					}
 					else{
@@ -1948,9 +1730,4 @@
 						
 						treeBuilder.setModelsToBeExcluded(modelsToBeExcluded);
-						
-//						IWorkspace workspace = ResourcesPlugin.getWorkspace();
-//						IWorkspaceRoot root = workspace.getRoot();
-//						IProject iProject = root.getProject(projectName);
-//						treeBuilder.deleteOMCMarkers(iProject);
         				
 					}
Index: /trunk/modelicaml/org.openmodelica.modelicaml.product/META-INF/MANIFEST.MF
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.product/META-INF/MANIFEST.MF	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.product/META-INF/MANIFEST.MF	(revision 1632)
@@ -7,3 +7,17 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
- org.eclipse.ui.intro
+ org.eclipse.ui.intro,
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.2",
+ org.eclipse.e4.core.commands;bundle-version="0.10.1",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.e4.ui.bindings;bundle-version="0.10.1",
+ org.eclipse.e4.ui.css.core;bundle-version="0.10.1",
+ org.eclipse.e4.ui.css.swt;bundle-version="0.10.1",
+ org.eclipse.e4.ui.di;bundle-version="0.10.1",
+ org.eclipse.e4.ui.services;bundle-version="0.10.1",
+ org.eclipse.e4.ui.widgets;bundle-version="0.12.0",
+ org.eclipse.e4.ui.workbench.addons.swt;bundle-version="0.10.1",
+ org.eclipse.e4.ui.workbench.renderers.swt;bundle-version="0.10.1",
+ org.eclipse.e4.ui.workbench.swt;bundle-version="0.10.1",
+ org.eclipse.e4.ui.workbench3;bundle-version="0.12.0"
Index: /trunk/modelicaml/org.openmodelica.modelicaml.product/ModelicaML.product
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.product/ModelicaML.product	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.product/ModelicaML.product	(revision 1632)
@@ -2,5 +2,5 @@
 <?pde version="3.5"?>
 
-<product name="ModelicaML" id="org.openmodelica.modelicaml.product.product" application="org.eclipse.ui.ide.workbench" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="true">
+<product name="ModelicaML" id="org.openmodelica.modelicaml.product.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="1.0.0.qualifier" useFeatures="true" includeLaunchers="true">
 
    <aboutInfo>
@@ -22,5 +22,4 @@
    <windowImages i16="/org.openmodelica.modelicaml.common/icons/logos/ModelicaML_logo_16x16.png" i32="/org.openmodelica.modelicaml.common/icons/logos/ModelicaML_logo_32x32.png" i48="/org.openmodelica.modelicaml.common/icons/logos/ModelicaML_logo_48x48.png" i64="/org.openmodelica.modelicaml.common/icons/logos/ModelicaML_logo_64x64.png" i128="/org.openmodelica.modelicaml.common/icons/logos/ModelicaML_logo_128x128.png"/>
 
-
    <launcher name="ModelicaML">
       <solaris/>
@@ -29,5 +28,4 @@
       </win>
    </launcher>
-
 
    <vm>
@@ -58,535 +56,39 @@
 
    <plugins>
-      <plugin id="com.google.guava"/>
-      <plugin id="com.google.inject"/>
-      <plugin id="com.ibm.icu"/>
-      <plugin id="fr.obeo.acceleo.chain"/>
-      <plugin id="fr.obeo.acceleo.ecore"/>
-      <plugin id="fr.obeo.acceleo.ecore.ui"/>
-      <plugin id="fr.obeo.acceleo.gen"/>
-      <plugin id="fr.obeo.acceleo.gen.profiler"/>
-      <plugin id="fr.obeo.acceleo.template"/>
-      <plugin id="fr.obeo.acceleo.template.extender"/>
-      <plugin id="fr.obeo.acceleo.tools"/>
-      <plugin id="fr.obeo.acceleo.tools.ui"/>
-      <plugin id="javax.annotation"/>
-      <plugin id="javax.inject"/>
-      <plugin id="javax.xml"/>
-      <plugin id="lpg.runtime.java"/>
-      <plugin id="net.sourceforge.nattable.core"/>
-      <plugin id="org.antlr.runtime"/>
-      <plugin id="org.apache.ant"/>
-      <plugin id="org.apache.batik.bridge"/>
-      <plugin id="org.apache.batik.css"/>
-      <plugin id="org.apache.batik.dom"/>
-      <plugin id="org.apache.batik.dom.svg"/>
-      <plugin id="org.apache.batik.ext.awt"/>
-      <plugin id="org.apache.batik.parser"/>
-      <plugin id="org.apache.batik.pdf"/>
-      <plugin id="org.apache.batik.svggen"/>
-      <plugin id="org.apache.batik.transcoder"/>
-      <plugin id="org.apache.batik.util"/>
-      <plugin id="org.apache.batik.util.gui"/>
-      <plugin id="org.apache.batik.xml"/>
-      <plugin id="org.apache.commons.lang"/>
-      <plugin id="org.apache.commons.logging"/>
-      <plugin id="org.apache.log4j"/>
-      <plugin id="org.apache.xerces"/>
-      <plugin id="org.apache.xml.resolver"/>
-      <plugin id="org.apache.xml.serializer"/>
-      <plugin id="org.eclipse.ant.core"/>
-      <plugin id="org.eclipse.ant.launching"/>
-      <plugin id="org.eclipse.ant.ui"/>
-      <plugin id="org.eclipse.compare"/>
-      <plugin id="org.eclipse.compare.core"/>
-      <plugin id="org.eclipse.core.commands"/>
-      <plugin id="org.eclipse.core.contenttype"/>
-      <plugin id="org.eclipse.core.databinding"/>
-      <plugin id="org.eclipse.core.databinding.beans"/>
-      <plugin id="org.eclipse.core.databinding.observable"/>
-      <plugin id="org.eclipse.core.databinding.property"/>
-      <plugin id="org.eclipse.core.expressions"/>
-      <plugin id="org.eclipse.core.externaltools"/>
-      <plugin id="org.eclipse.core.filebuffers"/>
-      <plugin id="org.eclipse.core.filesystem"/>
-      <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
-      <plugin id="org.eclipse.core.jobs"/>
-      <plugin id="org.eclipse.core.net"/>
-      <plugin id="org.eclipse.core.net.win32.x86_64" fragment="true"/>
-      <plugin id="org.eclipse.core.resources"/>
-      <plugin id="org.eclipse.core.runtime"/>
-      <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
-      <plugin id="org.eclipse.core.variables"/>
-      <plugin id="org.eclipse.debug.core"/>
-      <plugin id="org.eclipse.debug.ui"/>
-      <plugin id="org.eclipse.draw2d"/>
-      <plugin id="org.eclipse.e4.core.commands"/>
-      <plugin id="org.eclipse.e4.core.contexts"/>
-      <plugin id="org.eclipse.e4.core.di"/>
-      <plugin id="org.eclipse.e4.core.di.extensions"/>
-      <plugin id="org.eclipse.e4.core.services"/>
-      <plugin id="org.eclipse.e4.ui.bindings"/>
-      <plugin id="org.eclipse.e4.ui.css.core"/>
-      <plugin id="org.eclipse.e4.ui.css.swt"/>
-      <plugin id="org.eclipse.e4.ui.css.swt.theme"/>
-      <plugin id="org.eclipse.e4.ui.di"/>
-      <plugin id="org.eclipse.e4.ui.model.workbench"/>
-      <plugin id="org.eclipse.e4.ui.services"/>
-      <plugin id="org.eclipse.e4.ui.widgets"/>
-      <plugin id="org.eclipse.e4.ui.workbench"/>
-      <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/>
-      <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
-      <plugin id="org.eclipse.e4.ui.workbench.swt"/>
-      <plugin id="org.eclipse.e4.ui.workbench3"/>
-      <plugin id="org.eclipse.emf"/>
-      <plugin id="org.eclipse.emf.codegen"/>
-      <plugin id="org.eclipse.emf.codegen.ecore"/>
-      <plugin id="org.eclipse.emf.common"/>
-      <plugin id="org.eclipse.emf.common.ui"/>
-      <plugin id="org.eclipse.emf.converter"/>
-      <plugin id="org.eclipse.emf.databinding"/>
-      <plugin id="org.eclipse.emf.ecore"/>
-      <plugin id="org.eclipse.emf.ecore.change"/>
-      <plugin id="org.eclipse.emf.ecore.edit"/>
-      <plugin id="org.eclipse.emf.ecore.editor"/>
-      <plugin id="org.eclipse.emf.ecore.xmi"/>
-      <plugin id="org.eclipse.emf.edit"/>
-      <plugin id="org.eclipse.emf.edit.ui"/>
-      <plugin id="org.eclipse.emf.facet.aggregate.metamodel"/>
-      <plugin id="org.eclipse.emf.facet.common.core"/>
-      <plugin id="org.eclipse.emf.facet.common.ui"/>
-      <plugin id="org.eclipse.emf.facet.custom.core"/>
-      <plugin id="org.eclipse.emf.facet.custom.metamodel"/>
-      <plugin id="org.eclipse.emf.facet.custom.ui"/>
-      <plugin id="org.eclipse.emf.facet.efacet"/>
-      <plugin id="org.eclipse.emf.facet.efacet.catalog"/>
-      <plugin id="org.eclipse.emf.facet.efacet.core"/>
-      <plugin id="org.eclipse.emf.facet.efacet.metamodel"/>
-      <plugin id="org.eclipse.emf.facet.efacet.ui"/>
-      <plugin id="org.eclipse.emf.facet.infra.browser"/>
-      <plugin id="org.eclipse.emf.facet.infra.browser.custom"/>
-      <plugin id="org.eclipse.emf.facet.infra.browser.custom.core"/>
-      <plugin id="org.eclipse.emf.facet.infra.browser.custom.edit"/>
-      <plugin id="org.eclipse.emf.facet.infra.browser.custom.ui"/>
-      <plugin id="org.eclipse.emf.facet.infra.browser.uicore"/>
-      <plugin id="org.eclipse.emf.facet.infra.common.core"/>
-      <plugin id="org.eclipse.emf.facet.infra.common.ui"/>
-      <plugin id="org.eclipse.emf.facet.infra.facet"/>
-      <plugin id="org.eclipse.emf.facet.infra.facet.core"/>
-      <plugin id="org.eclipse.emf.facet.infra.facet.edit"/>
-      <plugin id="org.eclipse.emf.facet.infra.facet.editor"/>
-      <plugin id="org.eclipse.emf.facet.infra.facet.ui"/>
-      <plugin id="org.eclipse.emf.facet.infra.query"/>
-      <plugin id="org.eclipse.emf.facet.infra.query.core"/>
-      <plugin id="org.eclipse.emf.facet.infra.query.edit"/>
-      <plugin id="org.eclipse.emf.facet.infra.query.editor"/>
-      <plugin id="org.eclipse.emf.facet.infra.query.ui"/>
-      <plugin id="org.eclipse.emf.facet.query.java"/>
-      <plugin id="org.eclipse.emf.facet.query.java.core"/>
-      <plugin id="org.eclipse.emf.facet.query.java.metamodel"/>
-      <plugin id="org.eclipse.emf.facet.util.core"/>
-      <plugin id="org.eclipse.emf.facet.util.emf.catalog"/>
-      <plugin id="org.eclipse.emf.facet.util.emf.core"/>
-      <plugin id="org.eclipse.emf.facet.util.emf.ui"/>
-      <plugin id="org.eclipse.emf.facet.util.ui"/>
-      <plugin id="org.eclipse.emf.facet.widgets"/>
-      <plugin id="org.eclipse.emf.facet.widgets.celleditors"/>
-      <plugin id="org.eclipse.emf.facet.widgets.celleditors.ecore"/>
-      <plugin id="org.eclipse.emf.facet.widgets.celleditors.edit"/>
-      <plugin id="org.eclipse.emf.facet.widgets.nattable"/>
-      <plugin id="org.eclipse.emf.facet.widgets.nattable.instance"/>
-      <plugin id="org.eclipse.emf.facet.widgets.nattable.instance.edit"/>
-      <plugin id="org.eclipse.emf.facet.widgets.nattable.tableconfiguration"/>
-      <plugin id="org.eclipse.emf.facet.widgets.nattable.tableconfiguration.edit"/>
-      <plugin id="org.eclipse.emf.facet.widgets.nattable.workbench"/>
-      <plugin id="org.eclipse.emf.facet.widgets.table.metamodel"/>
-      <plugin id="org.eclipse.emf.facet.widgets.table.ui"/>
-      <plugin id="org.eclipse.emf.facet.widgets.table.ui.nattable"/>
-      <plugin id="org.eclipse.emf.facet.widgets.table.ui.workbench"/>
-      <plugin id="org.eclipse.emf.mapping.ecore2xml"/>
-      <plugin id="org.eclipse.emf.transaction"/>
-      <plugin id="org.eclipse.emf.transaction.ui"/>
-      <plugin id="org.eclipse.emf.validation"/>
-      <plugin id="org.eclipse.emf.validation.ocl"/>
-      <plugin id="org.eclipse.emf.validation.ui"/>
-      <plugin id="org.eclipse.emf.workspace"/>
-      <plugin id="org.eclipse.emf.workspace.ui"/>
-      <plugin id="org.eclipse.equinox.app"/>
-      <plugin id="org.eclipse.equinox.common"/>
-      <plugin id="org.eclipse.equinox.ds"/>
-      <plugin id="org.eclipse.equinox.event"/>
-      <plugin id="org.eclipse.equinox.frameworkadmin"/>
-      <plugin id="org.eclipse.equinox.frameworkadmin.equinox"/>
-      <plugin id="org.eclipse.equinox.p2.artifact.repository"/>
-      <plugin id="org.eclipse.equinox.p2.core"/>
-      <plugin id="org.eclipse.equinox.p2.director"/>
-      <plugin id="org.eclipse.equinox.p2.director.app"/>
-      <plugin id="org.eclipse.equinox.p2.engine"/>
-      <plugin id="org.eclipse.equinox.p2.garbagecollector"/>
-      <plugin id="org.eclipse.equinox.p2.jarprocessor"/>
-      <plugin id="org.eclipse.equinox.p2.metadata"/>
-      <plugin id="org.eclipse.equinox.p2.metadata.repository"/>
-      <plugin id="org.eclipse.equinox.p2.operations"/>
-      <plugin id="org.eclipse.equinox.p2.publisher"/>
-      <plugin id="org.eclipse.equinox.p2.publisher.eclipse"/>
-      <plugin id="org.eclipse.equinox.p2.repository"/>
-      <plugin id="org.eclipse.equinox.p2.repository.tools"/>
-      <plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/>
-      <plugin id="org.eclipse.equinox.p2.ui"/>
-      <plugin id="org.eclipse.equinox.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.equinox.security"/>
-      <plugin id="org.eclipse.equinox.security.ui"/>
-      <plugin id="org.eclipse.equinox.security.win32.x86_64" fragment="true"/>
-      <plugin id="org.eclipse.equinox.simpleconfigurator"/>
-      <plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/>
-      <plugin id="org.eclipse.equinox.util"/>
-      <plugin id="org.eclipse.gef"/>
-      <plugin id="org.eclipse.gmf.runtime.common.core"/>
-      <plugin id="org.eclipse.gmf.runtime.common.ui"/>
-      <plugin id="org.eclipse.gmf.runtime.common.ui.action"/>
-      <plugin id="org.eclipse.gmf.runtime.common.ui.action.ide"/>
-      <plugin id="org.eclipse.gmf.runtime.common.ui.printing"/>
-      <plugin id="org.eclipse.gmf.runtime.common.ui.printing.win32" fragment="true"/>
-      <plugin id="org.eclipse.gmf.runtime.common.ui.services"/>
-      <plugin id="org.eclipse.gmf.runtime.common.ui.services.action"/>
-      <plugin id="org.eclipse.gmf.runtime.common.ui.services.properties"/>
-      <plugin id="org.eclipse.gmf.runtime.diagram.core"/>
-      <plugin id="org.eclipse.gmf.runtime.diagram.ui"/>
-      <plugin id="org.eclipse.gmf.runtime.diagram.ui.actions"/>
-      <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing"/>
-      <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing.render"/>
-      <plugin id="org.eclipse.gmf.runtime.diagram.ui.properties"/>
-      <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers"/>
-      <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers.ide"/>
-      <plugin id="org.eclipse.gmf.runtime.diagram.ui.render"/>
-      <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor"/>
-      <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide"/>
-      <plugin id="org.eclipse.gmf.runtime.draw2d.ui"/>
-      <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render"/>
-      <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render.awt"/>
-      <plugin id="org.eclipse.gmf.runtime.emf.clipboard.core"/>
-      <plugin id="org.eclipse.gmf.runtime.emf.commands.core"/>
-      <plugin id="org.eclipse.gmf.runtime.emf.core"/>
-      <plugin id="org.eclipse.gmf.runtime.emf.type.core"/>
-      <plugin id="org.eclipse.gmf.runtime.emf.ui"/>
-      <plugin id="org.eclipse.gmf.runtime.emf.ui.properties"/>
-      <plugin id="org.eclipse.gmf.runtime.gef.ui"/>
-      <plugin id="org.eclipse.gmf.runtime.notation"/>
-      <plugin id="org.eclipse.gmt.modisco.infra.common.core"/>
-      <plugin id="org.eclipse.gmt.modisco.infra.common.ui"/>
-      <plugin id="org.eclipse.gmt.modisco.infra.discoverymanager"/>
-      <plugin id="org.eclipse.gmt.modisco.xml"/>
-      <plugin id="org.eclipse.gmt.modisco.xml.discoverer"/>
-      <plugin id="org.eclipse.help"/>
-      <plugin id="org.eclipse.jdt.apt.core"/>
-      <plugin id="org.eclipse.jdt.compiler.apt" fragment="true"/>
-      <plugin id="org.eclipse.jdt.compiler.tool" fragment="true"/>
-      <plugin id="org.eclipse.jdt.core"/>
-      <plugin id="org.eclipse.jdt.core.manipulation"/>
-      <plugin id="org.eclipse.jdt.debug"/>
-      <plugin id="org.eclipse.jdt.debug.ui"/>
-      <plugin id="org.eclipse.jdt.junit"/>
-      <plugin id="org.eclipse.jdt.junit.core"/>
-      <plugin id="org.eclipse.jdt.junit.runtime"/>
-      <plugin id="org.eclipse.jdt.launching"/>
-      <plugin id="org.eclipse.jdt.ui"/>
-      <plugin id="org.eclipse.jface"/>
-      <plugin id="org.eclipse.jface.databinding"/>
-      <plugin id="org.eclipse.jface.text"/>
-      <plugin id="org.eclipse.ltk.core.refactoring"/>
-      <plugin id="org.eclipse.ltk.ui.refactoring"/>
-      <plugin id="org.eclipse.m2m.qvt.oml"/>
-      <plugin id="org.eclipse.m2m.qvt.oml.common"/>
-      <plugin id="org.eclipse.m2m.qvt.oml.cst.parser"/>
-      <plugin id="org.eclipse.m2m.qvt.oml.ecore.imperativeocl"/>
-      <plugin id="org.eclipse.m2m.qvt.oml.emf.util"/>
-      <plugin id="org.eclipse.modisco.infra.discovery"/>
-      <plugin id="org.eclipse.modisco.infra.discovery.core"/>
-      <plugin id="org.eclipse.modisco.infra.discovery.ui"/>
-      <plugin id="org.eclipse.modisco.xml.discoverer"/>
-      <plugin id="org.eclipse.ocl"/>
-      <plugin id="org.eclipse.ocl.common"/>
-      <plugin id="org.eclipse.ocl.common.ui"/>
-      <plugin id="org.eclipse.ocl.ecore"/>
-      <plugin id="org.eclipse.ocl.edit"/>
-      <plugin id="org.eclipse.ocl.examples.common"/>
-      <plugin id="org.eclipse.ocl.examples.domain"/>
-      <plugin id="org.eclipse.ocl.examples.library"/>
-      <plugin id="org.eclipse.ocl.examples.pivot"/>
-      <plugin id="org.eclipse.ocl.examples.xtext.base"/>
-      <plugin id="org.eclipse.ocl.examples.xtext.console"/>
-      <plugin id="org.eclipse.ocl.examples.xtext.essentialocl"/>
-      <plugin id="org.eclipse.ocl.examples.xtext.essentialocl.ui"/>
-      <plugin id="org.eclipse.ocl.uml"/>
-      <plugin id="org.eclipse.ocl.uml.edit"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-      <plugin id="org.eclipse.papyrus.customization.palette"/>
-      <plugin id="org.eclipse.papyrus.customization.paletteconfiguration"/>
-      <plugin id="org.eclipse.papyrus.customization.properties"/>
-      <plugin id="org.eclipse.papyrus.customization.properties.generation"/>
-      <plugin id="org.eclipse.papyrus.customization.properties.model.xwt"/>
-      <plugin id="org.eclipse.papyrus.editor"/>
-      <plugin id="org.eclipse.papyrus.extensionpoints.editors"/>
-      <plugin id="org.eclipse.papyrus.infra.constraints"/>
-      <plugin id="org.eclipse.papyrus.infra.constraints.edit"/>
-      <plugin id="org.eclipse.papyrus.infra.constraints.editor"/>
-      <plugin id="org.eclipse.papyrus.infra.core"/>
-      <plugin id="org.eclipse.papyrus.infra.core.log"/>
-      <plugin id="org.eclipse.papyrus.infra.core.sasheditor"/>
-      <plugin id="org.eclipse.papyrus.infra.core.sasheditor.di"/>
-      <plugin id="org.eclipse.papyrus.infra.discovery"/>
-      <plugin id="org.eclipse.papyrus.infra.discovery.ui"/>
-      <plugin id="org.eclipse.papyrus.infra.discovery.ui.menu"/>
-      <plugin id="org.eclipse.papyrus.infra.emf"/>
-      <plugin id="org.eclipse.papyrus.infra.emf.appearance"/>
-      <plugin id="org.eclipse.papyrus.infra.emf.diagram.common"/>
-      <plugin id="org.eclipse.papyrus.infra.emf.readonly"/>
-      <plugin id="org.eclipse.papyrus.infra.export"/>
-      <plugin id="org.eclipse.papyrus.infra.extendedtypes"/>
-      <plugin id="org.eclipse.papyrus.infra.extendedtypes.emf"/>
-      <plugin id="org.eclipse.papyrus.infra.gmfdiag.commands"/>
-      <plugin id="org.eclipse.papyrus.infra.gmfdiag.common"/>
-      <plugin id="org.eclipse.papyrus.infra.gmfdiag.css.model"/>
-      <plugin id="org.eclipse.papyrus.infra.gmfdiag.dnd"/>
-      <plugin id="org.eclipse.papyrus.infra.gmfdiag.modelexplorer"/>
-      <plugin id="org.eclipse.papyrus.infra.gmfdiag.navigation"/>
-      <plugin id="org.eclipse.papyrus.infra.gmfdiag.outline"/>
-      <plugin id="org.eclipse.papyrus.infra.gmfdiag.preferences"/>
-      <plugin id="org.eclipse.papyrus.infra.gmfdiag.properties"/>
-      <plugin id="org.eclipse.papyrus.infra.gmfdiag.widgets"/>
-      <plugin id="org.eclipse.papyrus.infra.hyperlink"/>
-      <plugin id="org.eclipse.papyrus.infra.onefile"/>
-      <plugin id="org.eclipse.papyrus.infra.queries.core"/>
-      <plugin id="org.eclipse.papyrus.infra.queries.core.configuration"/>
-      <plugin id="org.eclipse.papyrus.infra.queries.core.configuration.edit"/>
-      <plugin id="org.eclipse.papyrus.infra.services.controlmode"/>
-      <plugin id="org.eclipse.papyrus.infra.services.controlmode.history"/>
-      <plugin id="org.eclipse.papyrus.infra.services.decoration"/>
-      <plugin id="org.eclipse.papyrus.infra.services.edit"/>
-      <plugin id="org.eclipse.papyrus.infra.services.markerlistener"/>
-      <plugin id="org.eclipse.papyrus.infra.services.resourceloading"/>
-      <plugin id="org.eclipse.papyrus.infra.services.resourceloading.preferences"/>
-      <plugin id="org.eclipse.papyrus.infra.services.validation"/>
-      <plugin id="org.eclipse.papyrus.infra.table.common"/>
-      <plugin id="org.eclipse.papyrus.infra.table.instance"/>
-      <plugin id="org.eclipse.papyrus.infra.table.menu"/>
-      <plugin id="org.eclipse.papyrus.infra.table.modelexplorer"/>
-      <plugin id="org.eclipse.papyrus.infra.table.properties"/>
-      <plugin id="org.eclipse.papyrus.infra.tools"/>
-      <plugin id="org.eclipse.papyrus.infra.ui.resources"/>
-      <plugin id="org.eclipse.papyrus.infra.widgets"/>
-      <plugin id="org.eclipse.papyrus.infra.widgets.toolbox"/>
-      <plugin id="org.eclipse.papyrus.sysml"/>
-      <plugin id="org.eclipse.papyrus.sysml.diagram.blockdefinition"/>
-      <plugin id="org.eclipse.papyrus.sysml.diagram.common"/>
-      <plugin id="org.eclipse.papyrus.sysml.diagram.internalblock"/>
-      <plugin id="org.eclipse.papyrus.sysml.diagram.requirement"/>
-      <plugin id="org.eclipse.papyrus.sysml.diagram.ui"/>
-      <plugin id="org.eclipse.papyrus.sysml.edit"/>
-      <plugin id="org.eclipse.papyrus.sysml.facets"/>
-      <plugin id="org.eclipse.papyrus.sysml.modelexplorer"/>
-      <plugin id="org.eclipse.papyrus.sysml.properties"/>
-      <plugin id="org.eclipse.papyrus.sysml.service.types"/>
-      <plugin id="org.eclipse.papyrus.sysml.table.allocation"/>
-      <plugin id="org.eclipse.papyrus.sysml.table.requirement"/>
-      <plugin id="org.eclipse.papyrus.team.svn"/>
-      <plugin id="org.eclipse.papyrus.uml.alf"/>
-      <plugin id="org.eclipse.papyrus.uml.alf.ui"/>
-      <plugin id="org.eclipse.papyrus.uml.appearance"/>
-      <plugin id="org.eclipse.papyrus.uml.commands"/>
-      <plugin id="org.eclipse.papyrus.uml.controlmode.profile"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.activity"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.clazz"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.common"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.common.groups"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.common.palette.customaction"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.communication"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.component"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.composite"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.deployment"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.dnd"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.emftree"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.icons"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.menu"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.modelexplorer"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.navigation"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.package"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.paletteconfiguration"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.paletteconfiguration.edit"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.profile"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.sequence"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.statemachine"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.usecase"/>
-      <plugin id="org.eclipse.papyrus.uml.diagram.wizards"/>
-      <plugin id="org.eclipse.papyrus.uml.documentation.profile"/>
-      <plugin id="org.eclipse.papyrus.uml.extensionpoints"/>
-      <plugin id="org.eclipse.papyrus.uml.icons"/>
-      <plugin id="org.eclipse.papyrus.uml.import"/>
-      <plugin id="org.eclipse.papyrus.uml.modelexplorer"/>
-      <plugin id="org.eclipse.papyrus.uml.modelexplorer.widgets"/>
-      <plugin id="org.eclipse.papyrus.uml.oclconstraintevaluation"/>
-      <plugin id="org.eclipse.papyrus.uml.pastemanager"/>
-      <plugin id="org.eclipse.papyrus.uml.perspective"/>
-      <plugin id="org.eclipse.papyrus.uml.profile"/>
-      <plugin id="org.eclipse.papyrus.uml.properties"/>
-      <plugin id="org.eclipse.papyrus.uml.resourceloading.profile"/>
-      <plugin id="org.eclipse.papyrus.uml.service.types"/>
-      <plugin id="org.eclipse.papyrus.uml.table.default"/>
-      <plugin id="org.eclipse.papyrus.uml.table.widgets.celleditors"/>
-      <plugin id="org.eclipse.papyrus.uml.templaterepository"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.collaborationuse.xtext"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.collaborationuse.xtext.ui"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.common.xtext"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.common.xtext.ui"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.connectionpointreference.xtext"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.connectionpointreference.xtext.ui"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.constraintwithessentialocl.xtext"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.message.xtext"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.message.xtext.ui"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.parameter.xtext"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.parameter.xtext.ui"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.property.xtext"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.property.xtext.ui"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.state.xtext"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.state.xtext.ui"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.stereotypeproperty.xtext"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.stereotypeproperty.xtext.ui"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.transition.xtext"/>
-      <plugin id="org.eclipse.papyrus.uml.textedit.transition.xtext.ui"/>
-      <plugin id="org.eclipse.papyrus.uml.tools"/>
-      <plugin id="org.eclipse.papyrus.uml.tools.extendedtypes"/>
-      <plugin id="org.eclipse.papyrus.uml.tools.utils"/>
-      <plugin id="org.eclipse.papyrus.views.modelexplorer"/>
-      <plugin id="org.eclipse.papyrus.views.modelexplorer.resourceloading"/>
-      <plugin id="org.eclipse.papyrus.views.modelexplorer.widgets"/>
-      <plugin id="org.eclipse.papyrus.views.properties"/>
-      <plugin id="org.eclipse.papyrus.views.properties.model"/>
-      <plugin id="org.eclipse.papyrus.views.properties.model.edit"/>
-      <plugin id="org.eclipse.papyrus.views.properties.model.editor"/>
-      <plugin id="org.eclipse.papyrus.xwt"/>
-      <plugin id="org.eclipse.pde"/>
-      <plugin id="org.eclipse.pde.build"/>
-      <plugin id="org.eclipse.pde.core"/>
-      <plugin id="org.eclipse.pde.launching"/>
-      <plugin id="org.eclipse.pde.runtime"/>
-      <plugin id="org.eclipse.pde.ui"/>
-      <plugin id="org.eclipse.search"/>
-      <plugin id="org.eclipse.swt"/>
-      <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
-      <plugin id="org.eclipse.team.core"/>
-      <plugin id="org.eclipse.team.ui"/>
-      <plugin id="org.eclipse.text"/>
-      <plugin id="org.eclipse.ui"/>
-      <plugin id="org.eclipse.ui.browser"/>
-      <plugin id="org.eclipse.ui.cheatsheets"/>
-      <plugin id="org.eclipse.ui.console"/>
-      <plugin id="org.eclipse.ui.editors"/>
-      <plugin id="org.eclipse.ui.externaltools"/>
-      <plugin id="org.eclipse.ui.forms"/>
-      <plugin id="org.eclipse.ui.ide"/>
-      <plugin id="org.eclipse.ui.ide.application"/>
-      <plugin id="org.eclipse.ui.intro"/>
-      <plugin id="org.eclipse.ui.navigator"/>
-      <plugin id="org.eclipse.ui.navigator.resources"/>
-      <plugin id="org.eclipse.ui.views"/>
-      <plugin id="org.eclipse.ui.views.log"/>
-      <plugin id="org.eclipse.ui.views.properties.tabbed"/>
-      <plugin id="org.eclipse.ui.win32" fragment="true"/>
-      <plugin id="org.eclipse.ui.workbench"/>
-      <plugin id="org.eclipse.ui.workbench.texteditor"/>
-      <plugin id="org.eclipse.uml2"/>
-      <plugin id="org.eclipse.uml2.codegen.ecore"/>
-      <plugin id="org.eclipse.uml2.common"/>
-      <plugin id="org.eclipse.uml2.common.edit"/>
-      <plugin id="org.eclipse.uml2.types"/>
-      <plugin id="org.eclipse.uml2.uml"/>
-      <plugin id="org.eclipse.uml2.uml.edit"/>
-      <plugin id="org.eclipse.uml2.uml.editor"/>
-      <plugin id="org.eclipse.uml2.uml.profile.l2"/>
-      <plugin id="org.eclipse.uml2.uml.profile.l3"/>
-      <plugin id="org.eclipse.uml2.uml.resources"/>
-      <plugin id="org.eclipse.update.configurator"/>
-      <plugin id="org.eclipse.wst.common.core"/>
-      <plugin id="org.eclipse.wst.common.uriresolver"/>
-      <plugin id="org.eclipse.wst.sse.core"/>
-      <plugin id="org.eclipse.wst.xml.core"/>
-      <plugin id="org.eclipse.xtext"/>
-      <plugin id="org.eclipse.xtext.builder"/>
-      <plugin id="org.eclipse.xtext.common.types"/>
-      <plugin id="org.eclipse.xtext.common.types.ui"/>
-      <plugin id="org.eclipse.xtext.gmf.glue"/>
-      <plugin id="org.eclipse.xtext.logging" fragment="true"/>
-      <plugin id="org.eclipse.xtext.ui"/>
-      <plugin id="org.eclipse.xtext.ui.codetemplates"/>
-      <plugin id="org.eclipse.xtext.ui.codetemplates.ui"/>
-      <plugin id="org.eclipse.xtext.ui.shared"/>
-      <plugin id="org.eclipse.xtext.util"/>
-      <plugin id="org.eclipse.xtext.xbase.lib"/>
-      <plugin id="org.hamcrest.core"/>
-      <plugin id="org.junit"/>
-      <plugin id="org.junit4"/>
-      <plugin id="org.modelica.mdt.breakpoint"/>
-      <plugin id="org.modelica.mdt.core"/>
-      <plugin id="org.modelica.mdt.debug.core"/>
-      <plugin id="org.modelica.mdt.omc"/>
-      <plugin id="org.modelica.mdt.ui"/>
-      <plugin id="org.openmodelica.modelicaml.common"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.activitycontrolflowguardexpression"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.activitycontrolflowguardexpression.ui"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.algorithmsection"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.algorithmsection.ui"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.arraysubscript"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.arraysubscript.ui"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.conditionalattribute"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.conditionalattribute.ui"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.declaration"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.declaration.ui"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.equationsection"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.equationsection.ui"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.modeleditor"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.modeleditor.ui"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.modification"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.modification.ui"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.statetransitionguardexpression"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.statetransitionguardexpression.ui"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.valuebinding.client"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.valuebinding.client.ui"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.valuebinding.mediator"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.valuebinding.mediator.ui"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.valuebinding.provider"/>
-      <plugin id="org.openmodelica.modelicaml.editor.xtext.valuebinding.provider.ui"/>
-      <plugin id="org.openmodelica.modelicaml.gen.modelica"/>
-      <plugin id="org.openmodelica.modelicaml.helper"/>
-      <plugin id="org.openmodelica.modelicaml.model.explorer.customization"/>
-      <plugin id="org.openmodelica.modelicaml.modelica.importer"/>
-      <plugin id="org.openmodelica.modelicaml.perspective"/>
-      <plugin id="org.openmodelica.modelicaml.preferences"/>
-      <plugin id="org.openmodelica.modelicaml.product"/>
-      <plugin id="org.openmodelica.modelicaml.profile"/>
-      <plugin id="org.openmodelica.modelicaml.profile.report"/>
-      <plugin id="org.openmodelica.modelicaml.properties"/>
-      <plugin id="org.openmodelica.modelicaml.simulation"/>
-      <plugin id="org.openmodelica.modelicaml.tabbedproperties.editors"/>
-      <plugin id="org.openmodelica.modelicaml.tabbedproperties.editors.glue"/>
-      <plugin id="org.openmodelica.modelicaml.traceability"/>
-      <plugin id="org.openmodelica.modelicaml.validation"/>
-      <plugin id="org.openmodelica.modelicaml.view.componentstree"/>
-      <plugin id="org.openmodelica.modelicaml.view.valuebindings"/>
-      <plugin id="org.openmodelica.simulation.libs.jfreechart"/>
-      <plugin id="org.openmodelica.simulation.libs.xom"/>
-      <plugin id="org.sat4j.core"/>
-      <plugin id="org.sat4j.pb"/>
-      <plugin id="org.w3c.css.sac"/>
-      <plugin id="org.w3c.dom.events"/>
-      <plugin id="org.w3c.dom.smil"/>
-      <plugin id="org.w3c.dom.svg"/>
    </plugins>
 
    <features>
-      <feature id="org.openmodelica.modelicaml.feature" version="1.8.9.qualifier"/>
+      <feature id="org.eclipse.papyrus.uml.textedit.feature"/>
+      <feature id="org.eclipse.papyrus.uml.feature"/>
+      <feature id="org.eclipse.uml2"/>
+      <feature id="org.eclipse.papyrus.infra.feature"/>
+      <feature id="org.eclipse.papyrus.views.properties.feature"/>
+      <feature id="org.eclipse.papyrus.infra.gmfdiag.feature"/>
+      <feature id="org.eclipse.papyrus.uml.table.feature"/>
+      <feature id="org.eclipse.papyrus.infra.services.feature"/>
+      <feature id="org.eclipse.papyrus.infra.widget.feature"/>
+      <feature id="org.eclipse.papyrus.uml.properties.feature"/>
+      <feature id="org.eclipse.papyrus.infra.core.feature"/>
+      <feature id="org.eclipse.papyrus.uml.tools.feature"/>
+      <feature id="org.eclipse.papyrus.editor.feature"/>
       <feature id="fr.obeo.acceleo"/>
-      <feature id="org.eclipse.papyrus.editor.feature"/>
+      <feature id="org.modelica.mdt"/>
+      <feature id="org.eclipse.xtext.ui"/>
+      <feature id="org.eclipse.papyrus.infra.table.feature"/>
+      <feature id="org.eclipse.papyrus.uml.modelexplorer.feature"/>
+      <feature id="org.eclipse.papyrus.infra.emf.feature"/>
+      <feature id="org.eclipse.papyrus.uml.diagram.feature"/>
+      <feature id="org.eclipse.papyrus.xwt.feature"/>
+      <feature id="org.eclipse.papyrus.customization.feature"/>
+      <feature id="org.eclipse.emf.validation"/>
+      <feature id="org.eclipse.papyrus.infra.queries.feature"/>
+      <feature id="org.eclipse.papyrus.uml.alf.feature"/>
+      <feature id="org.eclipse.xtext.runtime"/>
+      <feature id="org.eclipse.papyrus.infra.discovery.feature"/>
+      <feature id="org.eclipse.papyrus.views.modelexplorer.feature"/>
+      <feature id="org.eclipse.emf.ecore"/>
+      <feature id="org.eclipse.e4.rcp"/>
+      <feature id="org.eclipse.emf.common"/>
+      <feature id="org.openmodelica.modelicaml.feature" version="1.9.1.qualifier"/>
    </features>
 
Index: /trunk/modelicaml/org.openmodelica.modelicaml.product/plugin.xml
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.product/plugin.xml	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.product/plugin.xml	(revision 1632)
@@ -6,5 +6,5 @@
          point="org.eclipse.core.runtime.products">
       <product
-            application="org.eclipse.ui.ide.workbench"
+            application="org.eclipse.e4.ui.workbench.swt.E4Application"
             name="ModelicaML">
          <property
Index: /trunk/modelicaml/org.openmodelica.modelicaml.traceability/src/org/openmodelica/modelicaml/traceability/views/helper/ModelComposer.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.traceability/src/org/openmodelica/modelicaml/traceability/views/helper/ModelComposer.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.traceability/src/org/openmodelica/modelicaml/traceability/views/helper/ModelComposer.java	(revision 1632)
@@ -296,6 +296,6 @@
 		vbc.updateAllBindings(valueBindingsPackage, null, treeParentToStartTheCheckOn, virtualInstantiationTreeRoot, false, true, false, true);
 		
-		if ( vbc.getAllRequiredClientsFound().size() > 0 
-				&& !vbc.getAllClientsWithPossibleBindingCodeDerivation().containsAll(vbc.getAllRequiredClientsFound())) {
+		if ( vbc.getAllMandatoryClientsFound().size() > 0 
+				&& !vbc.getAllClientsWithPossibleBindingCodeDerivation().containsAll(vbc.getAllMandatoryClientsFound())) {
 			allRequiredClientsAreSatisfied = false;
 		}
@@ -303,5 +303,5 @@
 		// Collect all mandatory clients that are not satisfied.
 		HashSet<TreeObject> unsatisfiedRequiredClients = new HashSet<TreeObject>();
-		unsatisfiedRequiredClients.addAll(vbc.getAllRequiredClientsFound());
+		unsatisfiedRequiredClients.addAll(vbc.getAllMandatoryClientsFound());
 		unsatisfiedRequiredClients.removeAll(vbc.getAllClientsWithPossibleBindingCodeDerivation());
 
Index: /trunk/modelicaml/org.openmodelica.modelicaml.traceability/src/org/openmodelica/modelicaml/traceability/views/model/TreeBuilder.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.traceability/src/org/openmodelica/modelicaml/traceability/views/model/TreeBuilder.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.traceability/src/org/openmodelica/modelicaml/traceability/views/model/TreeBuilder.java	(revision 1632)
@@ -326,8 +326,12 @@
 				for (Element requirement : requirements) {
 					addToMapList(reqToScenarios, requirement, scenario);
-					if (tsmc.getUnsatisfiedRequiredClients(requirement) != null) {
+					
+					
+					//if NOT all mandatory are satisfied 
+					if (tsmc.getModelClients(requirement) != null && tsmc.getUnsatisfiedMandatoryClients(requirement) != null) {
 						requirementsWithUnsatisfiedClients.add(requirement);
 					}
-					else {
+					// if requirement has clients at all
+					else if (tsmc.getModelClients(requirement) != null) {
 						requirementsValid.add(requirement);
 					}
@@ -566,5 +570,5 @@
 					
 					// get unsatisfied clients
-					HashSet<org.openmodelica.modelicaml.common.instantiation.TreeObject> unsatisfiedClients = combination.getUnsatisfiedRequiredClients(req);
+					HashSet<org.openmodelica.modelicaml.common.instantiation.TreeObject> unsatisfiedClients = combination.getUnsatisfiedMandatoryClients(req);
 					if (unsatisfiedClients != null) {
 						for (org.openmodelica.modelicaml.common.instantiation.TreeObject treeObject : unsatisfiedClients) {
Index: /trunk/modelicaml/org.openmodelica.modelicaml.view.componentstree/src/org/openmodelica/modelicaml/view/componentstree/display/ViewLabelProvider.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.view.componentstree/src/org/openmodelica/modelicaml/view/componentstree/display/ViewLabelProvider.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.view.componentstree/src/org/openmodelica/modelicaml/view/componentstree/display/ViewLabelProvider.java	(revision 1632)
@@ -38,4 +38,5 @@
 import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.List;
 
 import org.eclipse.core.resources.IMarker;
@@ -46,7 +47,4 @@
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.xmi.XMLResource;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.viewers.DecorationOverlayIcon;
@@ -62,6 +60,4 @@
 import org.eclipse.swt.graphics.RGB;
 import org.eclipse.swt.graphics.TextStyle;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.Element;
@@ -82,5 +78,4 @@
 import org.openmodelica.modelicaml.common.utls.SWTResourceManager;
 import org.openmodelica.modelicaml.view.componentstree.Activator;
-import org.openmodelica.modelicaml.view.valuebindings.model.TreeUtls;
 
 
@@ -104,5 +99,5 @@
 	private static final String requirementInstanceStereotypeQName = Constants.stereotypeQName_RequirementInstance;
 	
-	private final ImageDescriptor warningImageDescriptor = ResourceManager.getPluginImageDescriptor("org.openmodelica.modelicaml.common", "icons/overlay/warning_ovr.gif");
+//	private final ImageDescriptor warningImageDescriptor = ResourceManager.getPluginImageDescriptor("org.openmodelica.modelicaml.common", "icons/overlay/warning_ovr.gif");
 //	private final ImageDescriptor errorImageDescriptor = ResourceManager.getPluginImageDescriptor("org.openmodelica.modelicaml.common", "icons/overlay/error_ovr.gif");
 	private final ImageDescriptor errorImageDescriptor = ResourceManager.getPluginImageDescriptor("org.openmodelica.modelicaml.common", "icons/overlay/error_ovr.gif");
@@ -398,8 +393,11 @@
 	 * @return the boolean
 	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
 	private Boolean hasArraySize(TypedElement element, Stereotype stereotype){
-		EList<String> modList = (EList<String>) element.getValue(stereotype, "arraySize");
-		if (modList != null && modList.size() > 0) {
-			for (String string : modList) {
+		Object modList = element.getValue(stereotype, Constants.propertyName_arraySize);
+//		EList<String> modList = (EList<String>) element.getValue(stereotype, Constants.propertyName_arraySize);
+		if (modList != null && modList instanceof List && ((List)modList).size() > 0) {
+			List<String> list = (List)modList;
+			for (String string : list) {
 				if (!string.trim().equals("")) {
 					return true;
Index: /trunk/modelicaml/org.openmodelica.modelicaml.view.componentstree/src/org/openmodelica/modelicaml/view/componentstree/sections/PropertySectionDetails.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.view.componentstree/src/org/openmodelica/modelicaml/view/componentstree/sections/PropertySectionDetails.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.view.componentstree/src/org/openmodelica/modelicaml/view/componentstree/sections/PropertySectionDetails.java	(revision 1632)
@@ -42,5 +42,4 @@
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.papyrus.views.modelexplorer.ModelExplorerPageBookView;
 import org.eclipse.papyrus.views.modelexplorer.ModelExplorerView;
@@ -72,5 +71,4 @@
 import org.openmodelica.modelicaml.common.instantiation.ModificationManager;
 import org.openmodelica.modelicaml.common.instantiation.TreeObject;
-import org.openmodelica.modelicaml.common.services.UmlServices;
 import org.openmodelica.modelicaml.common.utls.SWTResourceManager;
 
@@ -270,38 +268,15 @@
 			return " ## Could not identify the modification source ...## ";
 		}
-		
-
-//		NamedElement modSourceElement = item.getFinalModificationSource();
-//		if (modSourceElement != null ) {
-//	//		modSource = modSourceElement.eClass().getName() + " '" + modSourceElement.getQualifiedName() + "' ";
-//			if ( item.isInherited() ) { // the modification is stored in  
-//				return "'" + item.getSelectedClass().getQualifiedName() + "' ";	
-//			}
-//			else { // then it is a component modification
-//				return "'" + modSourceElement.getName() + "' ";
-//			}
-//		}
+
 		return "";
 	}
 	
 	private String getModificationTitle(){
-//		String modSource = "";
-//	//	if (ModificationManager.isInModModListOfComponent(treeObject.getFirstLevelComponent(), treeObject.getDotPathWithoutFirstLevelComponent())) {
-//	//		modSource = " in '" + treeObject.getFirstLevelComponent().getName() + "' ";
-//	//	}
-//		NamedElement modSourceElement = item.getFinalModificationSource();
-//		if (modSourceElement != null ) {
-//	//		modSource = modSourceElement.eClass().getName() + " '" + modSourceElement.getQualifiedName() + "' ";
-//			modSource = "'" + modSourceElement.getQualifiedName() + "' ";
-//		}
 		
 		String modDescription = "";
 		if (item.getFinalModificationDescription() != null) {
 			modDescription = item.getFinalModificationDescription();
-//			return "Overriden " + modDescription  + " in " + modSource + ": ";
 			return "Overriden " + modDescription  + " in";
 		}
-		
-//		label_modification.setToolTipText(modSource);
 
 		return "";
@@ -329,7 +304,7 @@
 	        String declarationString = "";
 			if (item.getProperty() != null) {
-				Stereotype stereotype = item.getProperty().getAppliedStereotype("ModelicaML::ModelicaCompositeConstructs::Variable");
+				Stereotype stereotype = item.getProperty().getAppliedStereotype(Constants.stereotypeQName_Variable);
 				if (stereotype != null) {
-					Object declarationEquationOrAssignment = UmlServices.getStereotypeValue((Element)item.getProperty(), stereotype.getName(), "declarationEquationOrAssignment");
+					Object declarationEquationOrAssignment = item.getProperty().getValue(stereotype, Constants.propertyName_declarationEquationOrAssignment);
 					if (declarationEquationOrAssignment instanceof String) {
 						declarationString = " " + declarationEquationOrAssignment.toString().trim();
Index: /trunk/modelicaml/org.openmodelica.modelicaml.view.componentstree/src/org/openmodelica/modelicaml/view/componentstree/views/ComponentsTree.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.view.componentstree/src/org/openmodelica/modelicaml/view/componentstree/views/ComponentsTree.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.view.componentstree/src/org/openmodelica/modelicaml/view/componentstree/views/ComponentsTree.java	(revision 1632)
@@ -625,74 +625,5 @@
 	 */
 	private void makeActions() {
-		
-//		actionAddValueProvider = new Action("actionAddValueProvider") {
-//			public void run() {
-//				
-//				ISelection selection = viewer.getSelection();
-//				Object obj = ((IStructuredSelection) selection).getFirstElement();
-//				if (obj instanceof TreeObject) {
-//					TreeObject item = (TreeObject)obj;
-//					if (item.isValueClient()) {
-//						List<String> listOfAllowedMetaClassesNames = new ArrayList<String>();
-//						listOfAllowedMetaClassesNames.add("Property");
-//						String title = "Value Provider Selection";
-//						String message = "Click on a model element to be associated as Value Provider."; 
-//
-//						NOT_USED_SelectValueClientOrProviderDialog dialog = new NOT_USED_SelectValueClientOrProviderDialog(
-//								new Shell(), 
-//								SWTResourceManager.getImage(NOT_USED_SelectValueClientOrProviderDialog.class,"/icons/selectOnly.png"), 
-//								title, 
-//								message, 
-//								listOfAllowedMetaClassesNames,
-//								item,
-//								viewer,
-//								NOT_USED_SelectValueClientOrProviderDialog.MODE_ADD_PROVIDER,
-//								actionEditModification,
-//								actionLinkWithEditor);
-//						dialog.open();
-//					}
-//				}
-//			}
-//		};
-//		actionAddValueProvider.setText("Add a Value Provider");
-//		actionAddValueProvider.setToolTipText("Add a Value Provider");
-//		actionAddValueProvider.setImageDescriptor(ImageDescriptor.createFromFile(NOT_USED_SelectValueClientOrProviderDialog.class, "/icons/addValueProviders.png"));
-
-		
-		
-//		actionAddValueClient = new Action("actionAddValueClient") {
-//			public void run() {
-//				
-//				ISelection selection = viewer.getSelection();
-//				Object obj = ((IStructuredSelection) selection).getFirstElement();
-//				if (obj instanceof TreeObject) {
-//					TreeObject item = (TreeObject)obj;
-//					if (item.isValueProvider()) {
-//						List<String> listOfAllowedMetaClassesNames = new ArrayList<String>();
-//						listOfAllowedMetaClassesNames.add("Property");
-//						String title = "Value Client Selection";
-//						String message = "Click on a model element to be associated as Value Client."; 
-//
-//						NOT_USED_SelectValueClientOrProviderDialog dialog = new NOT_USED_SelectValueClientOrProviderDialog(
-//								new Shell(), 
-//								SWTResourceManager.getImage(NOT_USED_SelectValueClientOrProviderDialog.class,"/icons/selectOnly.png"), 
-//								title, 
-//								message, 
-//								listOfAllowedMetaClassesNames,
-//								item,
-//								viewer,
-//								NOT_USED_SelectValueClientOrProviderDialog.MODE_ADD_CLIENT,
-//								actionEditModification,
-//								actionLinkWithEditor);
-//						dialog.open();
-//					}
-//				}
-//			}
-//		};
-//		actionAddValueClient.setText("Add a Value Client");
-//		actionAddValueClient.setToolTipText("Add a Value actionAddValueClient");
-//		actionAddValueClient.setImageDescriptor(ImageDescriptor.createFromFile(NOT_USED_SelectValueClientOrProviderDialog.class, "/icons/addValueClient.png"));
-
-		
+	
 		actionAllDeleteModifications = new Action("actionAllDeleteModifications") {
 			public void run() {
@@ -872,10 +803,11 @@
 						
 						// update bindings
-//						ValueBindingCreator vc = new ValueBindingCreator();
-//						vc.updateAllBindings(root.getSelectedClass().getModel(), item, root, deleteOldBindings, confirmationDialog.isAutomaticSelectionOfProviders(), true, false);
-
 						try {
 							// update bindings
 							CreatorValueBinding vc = new CreatorValueBinding();
+							
+							//pass pre-collected mediators in order to avoid new search
+							vc.setAllMediators(getAst().getAllMediators());
+							
 							vc.updateAllBindings(root.getSelectedClass().getModel(), 
 										org.openmodelica.modelicaml.common.instantiation.TreeUtls.classInstantiation, 
@@ -951,9 +883,6 @@
 			}
 		};
-//		actionUpdateBindings.setText("Update bindings in all sub-components");
-//		actionUpdateBindings.setToolTipText("Update bindings in all sub-components");
 		actionUpdateBindings.setText("Update bindings");
 		actionUpdateBindings.setToolTipText("Update bindings in all sub-components");
-//		actionUpdateBindings.setImageDescriptor(ImageDescriptor.createFromFile(Activator.class, "/icons/updateBindings.png"));
 		actionUpdateBindings.setImageDescriptor(ImageDescriptor.createFromImage(ResourceManager.getPluginImage("org.openmodelica.modelicaml.view.valuebindings", "/icons/valueMediator.png")));
 		
Index: /trunk/modelicaml/org.openmodelica.modelicaml.view.valuebindings/src/org/openmodelica/modelicaml/view/valuebindings/helpers/DeriveValueBindingCodeHelper.java
===================================================================
--- /trunk/modelicaml/org.openmodelica.modelicaml.view.valuebindings/src/org/openmodelica/modelicaml/view/valuebindings/helpers/DeriveValueBindingCodeHelper.java	(revision 1631)
+++ /trunk/modelicaml/org.openmodelica.modelicaml.view.valuebindings/src/org/openmodelica/modelicaml/view/valuebindings/helpers/DeriveValueBindingCodeHelper.java	(revision 1632)
@@ -59,4 +59,5 @@
 import org.openmodelica.modelicaml.common.instantiation.TreeObject;
 import org.openmodelica.modelicaml.common.instantiation.TreeParent;
+import org.openmodelica.modelicaml.common.services.StringUtls;
 import org.openmodelica.modelicaml.common.valuebindings.helpers.BindingsDataCollector;
 import org.openmodelica.modelicaml.view.valuebindings.dialogs.SelectValueMediatorDialog;
@@ -198,6 +199,9 @@
 	
 	public String translateClientScript(TreeObject clientTreeObject, String clientOperation, String codeDerivedFromMediator){
+
+		String clientDotPath = clientTreeObject.getDotPath();
+		
 		if (clientTreeObject != null && clientOperation != null) {
-			clientOperation = clientOperation.replaceAll(Constants.MACRO_clientPath, clientTreeObject.getDotPath());
+			clientOperation = clientOperation.replaceAll(Constants.MACRO_clientPath, clientDotPath);
 			if (codeDerivedFromMediator != null) {
 				clientOperation = clientOperation.replaceAll(Constants.MACRO_getBinding+ "\\((\\s+)?\\)", codeDerivedFromMediator);				
@@ -337,10 +341,16 @@
 	
 	public String deriveCodeFromProvider(TreeObject provider, String providerOperation){
+
+		String providerDotPath = provider.getDotPath();
+		
 		if (providerOperation != null ) {
-			providerOperation = providerOperation.replaceAll(Constants.MACRO_providerPath, provider.getDotPath());
+			providerOperation = providerOperation.replaceAll(Constants.MACRO_providerPath, providerDotPath);
+			
 			return providerOperation;
 		}
-		return provider.getDotPath();
-	}
+		return providerDotPath;
+	}
+	
+	
 	
 	private List<TreeObject> getSortedList(HashSet<TreeObject> set){
@@ -996,5 +1006,5 @@
 	}
 	
-	public boolean isRequiredClient() {
+	public boolean isMandatoryClient() {
 		return isRequiredClient;
 	}
