Merge "Remove problematic TestSuite classes"
diff --git a/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/matching/constraints/DomainSlot.java b/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/matching/constraints/DomainSlot.java
index c59b3af..3746d34 100644
--- a/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/matching/constraints/DomainSlot.java
+++ b/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/matching/constraints/DomainSlot.java
@@ -15,6 +15,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 
 import org.eclipse.emf.ecore.EObject;
@@ -147,9 +148,9 @@
 			return false;
 		}
 		
-		if (!setValueAndLock()) {
-			return false;
-		}
+		//if (!setValueAndLock()) {
+		//	return false;
+		//}
 		
 		// Check the variable?
 		if (!checkedVariables.contains(variable)) {
@@ -158,6 +159,13 @@
 				return false;
 			}
 			
+			//Check injective
+			if(injective)
+			{
+			   if(!checkInjective(variable, domainMap))
+				   return false;
+			}
+			
 			// Check the dangling constraints:
 			if (dangling) {
 				for (DanglingConstraint danglingConstraint : variable.danglingConstraints) {
@@ -213,6 +221,34 @@
 		return true;
 		
 	}
+
+	/**Check if matching of variables violates injective
+	 * @param variable
+	 * @param domainMap
+	 */
+	private Boolean checkInjective(Variable variable, Map<Variable, DomainSlot> domainMap) {
+		
+		if(variable.name.isEmpty())
+			return true;
+		
+		for (Entry<Variable, DomainSlot> entry : domainMap.entrySet()) {
+			Variable checkDoaminVariable = entry.getKey();
+			DomainSlot checkDomainSlot = entry.getValue();
+			// If different variables have the same name
+			if (checkDoaminVariable.name.equals(variable.name) && variable != checkDoaminVariable)
+				// And the variables correspond to the same type
+				if (checkDoaminVariable.typeConstraint.type == variable.typeConstraint.type) {
+					// Compare whether their corresponding maps are consistent
+					if (checkDomainSlot.initialized) {
+						if (checkDomainSlot.value != domainMap.get(variable).value) {
+							return false;
+						}
+					}
+				}
+		}
+		
+		return true;
+	}
 	
 	/**
 	 * Removes the lock on this domain slot. If the domain contains additional
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/helpers/RuleEditPartVisibilityHelper.java b/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/helpers/RuleEditPartVisibilityHelper.java
index 2ca0d23..c0d89cd 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/helpers/RuleEditPartVisibilityHelper.java
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/helpers/RuleEditPartVisibilityHelper.java
@@ -168,8 +168,8 @@
 		toggleRuleParts(ruleEditPart, new BaseRuleConcealingCondition());
 	}
 
-	public static void showConfiguredRule(RuleEditPart ruleEditPart, Configuration configuration, String featureModel) {
-		if (featureModel == null || configuration == null || ruleEditPart == null) {
+	public static void showConfiguredRule(RuleEditPart ruleEditPart, Configuration configuration, String featureConstraint) {
+		if (featureConstraint == null || configuration == null || ruleEditPart == null) {
 			return;
 		}
 
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/helpers/VariabilityModelHelper.java b/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/helpers/VariabilityModelHelper.java
index fc1f176..c085654 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/helpers/VariabilityModelHelper.java
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/helpers/VariabilityModelHelper.java
@@ -35,7 +35,7 @@
 	}
 
 	public static Sentence getFeatureExpression(Configuration configuration) {
-		Sentence expr = FeatureExpression.getExpr(TransactionalVariabilityFactory.INSTANCE.createVariabilityRule(configuration.getRule()).getFeatureModel());
+		Sentence expr = FeatureExpression.getExpr(TransactionalVariabilityFactory.INSTANCE.createVariabilityRule(configuration.getRule()).getFeatureConstraint());
 		for (Feature vp : configuration.getFeatures()) {
 			if (vp.getBinding() == FeatureBinding.TRUE) {
 				expr = FeatureExpression.and(expr, FeatureExpression.getExpr(vp.getName()));
@@ -66,7 +66,7 @@
 	}
 
 	private static Sentence getFeatureExpression(Configuration configuration, Feature feature) {
-		Sentence expr = FeatureExpression.getExpr(TransactionalVariabilityFactory.INSTANCE.createVariabilityRule(configuration.getRule()).getFeatureModel());
+		Sentence expr = FeatureExpression.getExpr(TransactionalVariabilityFactory.INSTANCE.createVariabilityRule(configuration.getRule()).getFeatureConstraint());
 		if (expr == null)
 			expr = FeatureExpression.getExpr(Logic.TRUE);
 		for (Feature vp : configuration.getFeatures()) {
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/providers/ConfigurationProvider.java b/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/providers/ConfigurationProvider.java
index 29878df..55f77bf 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/providers/ConfigurationProvider.java
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/configuration/ui/providers/ConfigurationProvider.java
@@ -139,7 +139,7 @@
 			ConfigurationFactory fac = ConfigurationFactoryImpl.init();
 			result = fac.createConfiguration();
 			result.setRule(varRule);
-			String featureModel = varRule.getFeatureModel();
+			String featureConstraint = varRule.getFeatureConstraint();
 			EList<Feature> variabilityPoints = result.getFeatures();
 
 			if(varRule.getFeatures() != null) {
@@ -148,8 +148,8 @@
 					vp.setName(variabilityPointName);
 					variabilityPoints.add(vp);
 				}
-			} else if (featureModel != null && !featureModel.isEmpty()) {
-				Matcher match = Pattern.compile(REGEX).matcher(featureModel);
+			} else if (featureConstraint != null && !featureConstraint.isEmpty()) {
+				Matcher match = Pattern.compile(REGEX).matcher(featureConstraint);
 				while (match.find()) {
 					for (int i = 1; i <= match.groupCount(); i++) {
 						Feature vp = fac.createFeature();
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/ui/views/ObservableFeatureModelValue.java b/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/ui/views/ObservableFeatureConstraintValue.java
similarity index 93%
rename from plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/ui/views/ObservableFeatureModelValue.java
rename to plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/ui/views/ObservableFeatureConstraintValue.java
index c264237..4db8101 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/ui/views/ObservableFeatureModelValue.java
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/ui/views/ObservableFeatureConstraintValue.java
@@ -20,12 +20,12 @@
  *
  * @param <T>
  */
-public class ObservableFeatureModelValue<T> implements IObservableValue<String>{
+public class ObservableFeatureConstraintValue<T> implements IObservableValue<String>{
 	
 	IObservableValue<String> value;
 	boolean shouldUpdate;
 	
-	ObservableFeatureModelValue(IObservableValue<String> value) {
+	ObservableFeatureConstraintValue(IObservableValue<String> value) {
 		this.value = value;
 	}
 	
@@ -89,7 +89,7 @@
 	public String getValue() {
 		VariabilityRule rule = getTargetVariabilityRule();
 		if (rule != null) {
-			return rule.getFeatureModel();			
+			return rule.getFeatureConstraint();			
 		}
 		return value.getValue();
 	}
@@ -99,7 +99,7 @@
 		shouldUpdate = false;
 		VariabilityRule rule = getTargetVariabilityRule();
 		if (rule != null) {
-			VariabilityTransactionHelper.setAnnotationValue(rule, VariabilityConstants.FEATURE_MODEL, value);
+			VariabilityTransactionHelper.setAnnotationValue(rule, VariabilityConstants.FEATURE_CONSTRAINT, value);
 		}
 		shouldUpdate = true;
 	}
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/ui/views/VariabilityView.java b/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/ui/views/VariabilityView.java
index ba525df..98ca3c8 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/ui/views/VariabilityView.java
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.configuration.ui/src/org/eclipse/emf/henshin/variability/ui/views/VariabilityView.java
@@ -116,7 +116,7 @@
 	private boolean linkingActive;
 	private Text variabilityModelText;
 	private DataBindingContext variabilityModelTextBindingContext;
-	private ObservableFeatureModelValue<?> observableFeatureModelValue;
+	private ObservableFeatureConstraintValue<?> observableFeatureConstraintValue;
 	private FeatureViewerComparator comparator;
 	private ConfigurationProvider configurationProvider = ConfigurationProvider.getInstance();
 	private WritableValue<Rule> writableValue;
@@ -128,7 +128,7 @@
 	private Label ruleNameLabel;
 
 	private ToolItem add, delete, clear, refresh, selectedFavorite, deleteFavorite;
-	private ToolBar favoriteToolBar, featureModelToolbar;
+	private ToolBar favoriteToolBar, featureConstraintToolbar;
 
 	public RuleEditPart getSelectedRuleEditPart() {
 		return selectedRuleEditPart;
@@ -386,19 +386,19 @@
 
 		ruleNameLabel = new Label(composite, SWT.NONE);
 		ruleNameLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
-		ruleNameLabel.setText("No rule selected");
+		resetRuleNameLabel();
 
 		Label separatorName = new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR);
 		separatorName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));
 
 		Label variabilityModelLabel = new Label(composite, SWT.NONE);
 		variabilityModelLabel.setImage(ImageHelper.getImage("/icons/variability.gif"));
-		variabilityModelLabel.setText("Configuration constraint");
+		variabilityModelLabel.setText("Feature Constraint");
 		variabilityModelLabel.setLayoutData(new GridData(SWT.FILL, SWT.LEFT, false, false, 1, 1));
-		featureModelToolbar = new ToolBar(composite, SWT.FLAT);
-		GridDataFactory.fillDefaults().align(SWT.END, SWT.CENTER).grab(true, false).applyTo(featureModelToolbar);
-		featureModelToolbar.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
-		ToolItem createFeatures = new ToolItem(featureModelToolbar, SWT.PUSH);
+		featureConstraintToolbar = new ToolBar(composite, SWT.FLAT);
+		GridDataFactory.fillDefaults().align(SWT.END, SWT.CENTER).grab(true, false).applyTo(featureConstraintToolbar);
+		featureConstraintToolbar.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
+		ToolItem createFeatures = new ToolItem(featureConstraintToolbar, SWT.PUSH);
 		createFeatures.setImage(ImageHelper.getImage("/icons/create_features.png"));
 		createFeatures.setToolTipText("Create all undefined features");
 		createFeatures.addSelectionListener(new SelectionListener() {
@@ -412,7 +412,7 @@
 					feature.setName(featureName);
 					config.addFeature(feature);
 				}
-				featureModelToolbar.setVisible(false);
+				featureConstraintToolbar.setVisible(false);
 				refresh();
 			}
 
@@ -421,7 +421,7 @@
 
 			}
 		});
-		featureModelToolbar.setVisible(false);
+		featureConstraintToolbar.setVisible(false);
 		
 		variabilityModelText = new Text(composite, SWT.BORDER);
 		variabilityModelText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));
@@ -439,9 +439,9 @@
 //			}
 //		});
 //		
-//		bindingContext.bindValue(target, new ObservableFeatureModelValue(model), null, null);
-		observableFeatureModelValue = new ObservableFeatureModelValue<Object>(model);
-		variabilityModelTextBindingContext.bindValue(target, observableFeatureModelValue);
+//		bindingContext.bindValue(target, new ObservableFeatureConstraintValue(model), null, null);
+		observableFeatureConstraintValue = new ObservableFeatureConstraintValue<Object>(model);
+		variabilityModelTextBindingContext.bindValue(target, observableFeatureConstraintValue);
 
 		Label separator = new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR);
 		separator.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));
@@ -584,7 +584,7 @@
 				if (isChecked() && selectedRuleEditPart != null) {
 					super.run();
 					RuleEditPartVisibilityHelper.showConfiguredRule(selectedRuleEditPart, config,
-							TransactionalVariabilityFactory.INSTANCE.createVariabilityRule(config.getRule()).getFeatureModel());
+							TransactionalVariabilityFactory.INSTANCE.createVariabilityRule(config.getRule()).getFeatureConstraint());
 					if (creationMode == CreationMode.SELECTION) {
 						updateEditPolicy(selectedRuleEditPart);
 					}
@@ -706,16 +706,16 @@
 			Annotation annotation = findModifiedAnnotation(event.getNotifications());
 			if (annotation != null) {
 				String value = annotation.getValue();
-				if ((annotation.getKey().equals(VariabilityConstants.FEATURE_MODEL) || annotation.getKey().equals(VariabilityConstants.FEATURES)) && value != null && !value.isEmpty()) {
+				if ((annotation.getKey().equals(VariabilityConstants.FEATURE_CONSTRAINT) || annotation.getKey().equals(VariabilityConstants.FEATURES)) && value != null && !value.isEmpty()) {
 					if (config.getRule().hasMissingFeatures()) {
-						featureModelToolbar.setVisible(true);
+						featureConstraintToolbar.setVisible(true);
 					} else {
-						featureModelToolbar.setVisible(false);
+						featureConstraintToolbar.setVisible(false);
 					}
 				}
 				
 			}
-			if (observableFeatureModelValue.shouldUpdate()) {
+			if (observableFeatureConstraintValue.shouldUpdate()) {
 				refresh();
 			} else {
 				viewer.refresh();
@@ -740,7 +740,7 @@
 		domain.addResourceSetListener(new ConfigurationListener());
 
 		viewer.setInput(config);
-		ruleNameLabel.setText("Selected rule: " + rule.getName());
+		updateRuleNameLabel(rule);
 		writableValue.setValue(rule);
 		refreshFavorites(rule);
 
@@ -749,9 +749,9 @@
 		}
 		
 		if (rule.getMissingFeatures().length > 0) {
-			featureModelToolbar.setVisible(true);
+			featureConstraintToolbar.setVisible(true);
 		} else {
-			featureModelToolbar.setVisible(false);
+			featureConstraintToolbar.setVisible(false);
 		}
 
 		add.setEnabled(true);
@@ -759,6 +759,23 @@
 		clear.setEnabled(true);
 		refresh.setEnabled(true);
 	}
+	
+	private void resetRuleNameLabel() {
+		ruleNameLabel.setText("No rule selected");
+	}
+
+	private void updateRuleNameLabel(VariabilityRule rule) {
+		if (rule != null) {
+			String ruleName = rule.getName();
+			if (ruleName != null && ! ruleName.isEmpty()) {
+				ruleNameLabel.setText("Selected rule: " + rule.getName());				
+			} else {
+				ruleNameLabel.setText("Selected rule is unnamed");		
+			}
+		} else {
+			resetRuleNameLabel();
+		}
+	}
 
 	@Override
 	public Configuration getContent() {
@@ -769,6 +786,7 @@
 		viewer.refresh();
 		variabilityModelTextBindingContext.updateModels();
 		variabilityModelTextBindingContext.updateTargets();
+		updateRuleNameLabel(config.getRule());
 	}
 
 	@Override
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.configuration/src/configuration/impl/ConfigurationImpl.java b/plugins/variability/org.eclipse.emf.henshin.variability.configuration/src/configuration/impl/ConfigurationImpl.java
index 56cf8ef..87f1a33 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.configuration/src/configuration/impl/ConfigurationImpl.java
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.configuration/src/configuration/impl/ConfigurationImpl.java
@@ -19,8 +19,8 @@
 import org.eclipse.emf.henshin.model.Rule;
 import org.eclipse.emf.henshin.variability.wrapper.VariabilityFactory;
 import org.eclipse.emf.henshin.variability.wrapper.VariabilityConstants;
-import org.eclipse.emf.henshin.variability.wrapper.VariabilityHelper;
 import org.eclipse.emf.henshin.variability.wrapper.VariabilityRule;
+import org.eclipse.emf.henshin.variability.wrapper.VariabilityTransactionHelper;
 
 import configuration.Configuration;
 import configuration.ConfigurationFactory;
@@ -52,7 +52,7 @@
 	 * @author Stefan Schulz
 	 *
 	 */
-	private final class EFeatureModelContentAdapter extends EContentAdapter {
+	private final class EFeatureConstraintContentAdapter extends EContentAdapter {
 		@Override
 		public void notifyChanged(Notification notification) {
 			if (notification.getEventType() == Notification.REMOVING_ADAPTER) {
@@ -88,7 +88,7 @@
 	 */
 	protected EList<Feature> features;
 
-	protected EFeatureModelContentAdapter featuresContentAdapter;
+	protected EFeatureConstraintContentAdapter featuresContentAdapter;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -142,7 +142,7 @@
 	
 	private void enableContentAdapter() {
 		if (featuresContentAdapter == null) {
-			featuresContentAdapter = new EFeatureModelContentAdapter();
+			featuresContentAdapter = new EFeatureConstraintContentAdapter();
 		}
 		rule.eResource().getResourceSet().eAdapters().add(featuresContentAdapter);
 	}
@@ -168,7 +168,7 @@
 		if (featuresContentAdapter != null) {
 			oldRule.eResource().getResourceSet().eAdapters().remove(featuresContentAdapter);
 		} else {
-			featuresContentAdapter = new EFeatureModelContentAdapter();
+			featuresContentAdapter = new EFeatureConstraintContentAdapter();
 		}
 		rule = newRule;
 		rule.eResource().getResourceSet().eAdapters().add(featuresContentAdapter);
@@ -218,7 +218,7 @@
 		} else {
 			featureAnnotationValue += feature.getName();
 		}
-		VariabilityHelper.setAnnotationValue(rule, VariabilityConstants.FEATURES, featureAnnotationValue);
+		VariabilityTransactionHelper.setAnnotationValue(rule, VariabilityConstants.FEATURES, featureAnnotationValue);
 		enableContentAdapter();
 		return features.add(feature);
 	}
@@ -255,7 +255,7 @@
 			if (annotationFeatures.size() > 1) {
 				featureAnnotationValue = featureAnnotationValue.substring(0, featureAnnotationValue.length() - 2);
 			}
-			VariabilityHelper.setAnnotationValue(rule, VariabilityConstants.FEATURES, featureAnnotationValue);
+			VariabilityTransactionHelper.setAnnotationValue(rule, VariabilityConstants.FEATURES, featureAnnotationValue);
 			enableContentAdapter();
 			return features.remove(feature);
 		} else {
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.mergein.refactoring/src/org/eclipse/emf/henshin/variability/mergein/refactoring/logic/NewMerger.java b/plugins/variability/org.eclipse.emf.henshin.variability.mergein.refactoring/src/org/eclipse/emf/henshin/variability/mergein/refactoring/logic/NewMerger.java
index 713651b..d67bbe3 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.mergein.refactoring/src/org/eclipse/emf/henshin/variability/mergein/refactoring/logic/NewMerger.java
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.mergein.refactoring/src/org/eclipse/emf/henshin/variability/mergein/refactoring/logic/NewMerger.java
@@ -157,7 +157,7 @@
 
 	private void completeMerging() throws MergeInException {
 		setInjectiveMatching();
-		setFeatureModel();
+		setFeatureConstraint();
 		setFeatures();
 		setAnnotation();
 		if (furtherRules.isEmpty()) {
@@ -196,19 +196,19 @@
 		henshinModule.getUnits().removeAll(furtherRules);
 	}
 
-	private void setFeatureModel() {
-		String featureModel = XOR;
+	private void setFeatureConstraint() {
+		String featureConstraint = XOR;
 		VariabilityRule masterVarRule = VariabilityFactory.INSTANCE.createVariabilityRule(masterRule);
 		masterVarRule.addFeature(masterVarRule.getName());
-		featureModel += BRACKET_LEFT;
-		featureModel += getCondition(masterRule);
+		featureConstraint += BRACKET_LEFT;
+		featureConstraint += getCondition(masterRule);
 		for (Rule rule : furtherRules) {
-			featureModel += COMMA;
-			featureModel += getCondition(rule);
+			featureConstraint += COMMA;
+			featureConstraint += getCondition(rule);
 			masterVarRule.addFeature(rule.getName());
 		}
-		featureModel += BRACKET_RIGHT;
-		VariabilityFactory.INSTANCE.createVariabilityRule(masterRule).setFeatureModel(featureModel);
+		featureConstraint += BRACKET_RIGHT;
+		VariabilityFactory.INSTANCE.createVariabilityRule(masterRule).setFeatureConstraint(featureConstraint);
 	}
 	
 	private void setFeatures() {
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.test/data/comb/comb-var-old_syntax.henshin b/plugins/variability/org.eclipse.emf.henshin.variability.test/data/comb/comb-var-old_syntax.henshin
index 17aef83..68e80a5 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.test/data/comb/comb-var-old_syntax.henshin
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.test/data/comb/comb-var-old_syntax.henshin
@@ -4,7 +4,7 @@
   <imports href="http://www.eclipse.org/emf/2002/Ecore#/"/>
   <imports href="grid.ecore#/"/>
   <units xsi:type="henshin:Rule" xmi:id="_OVdmvvPvEeSqRohALvsrgg" name="combPattern">
-    <annotations xmi:id="_Be-oAJaQEemUmuWcLbh5qQ" key="featureModel" value="xor(combPattern3,combPattern4,combPattern5)"/>
+    <annotations xmi:id="_Be-oAJaQEemUmuWcLbh5qQ" key="featureConstraint" value="xor(combPattern3,combPattern4,combPattern5)"/>
     <annotations xmi:id="_Be-oAZaQEemUmuWcLbh5qQ" key="features" value="combPattern3, combPattern4, combPattern5"/>
     <lhs xmi:id="_OVdmv_PvEeSqRohALvsrgg" name="LHS">
       <nodes xmi:id="_OVdmwPPvEeSqRohALvsrgg" name="comb1" outgoing="_OVdmyPPvEeSqRohALvsrgg _OVdmyfPvEeSqRohALvsrgg">
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.test/data/comb/comb-var.henshin b/plugins/variability/org.eclipse.emf.henshin.variability.test/data/comb/comb-var.henshin
index 07a5aeb..6b7fa00 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.test/data/comb/comb-var.henshin
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.test/data/comb/comb-var.henshin
@@ -1,141 +1,141 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_q2mewKo1EeGWmNM0TiX1dQ">
-  <imports href="grid.ecore#/"/>
-  <units xsi:type="henshin:Rule" xmi:id="_OVdmvvPvEeSqRohALvsrgg" name="combPattern">
-    <annotations xmi:id="_Be-oAJaQEemUmuWcLbh5qQ" key="featureModel" value="xor(combPattern3, combPattern4, combPattern5)"/>
-    <annotations xmi:id="_Be-oAZaQEemUmuWcLbh5qQ" key="features" value="combPattern3, combPattern4, combPattern5"/>
-    <annotations xmi:id="_QirmcPpWEem5wpnPu4aQLQ" key="injectiveMatchingPresenceCondition"/>
-    <lhs xmi:id="_OVdmv_PvEeSqRohALvsrgg" name="LHS">
-      <nodes xmi:id="_OVdmwvPvEeSqRohALvsrgg" name="comb2" outgoing="_OVdmyvPvEeSqRohALvsrgg _OVdmy_PvEeSqRohALvsrgg">
-        <annotations xmi:id="_UGRpAPpWEem5wpnPu4aQLQ" key="presenceCondition"/>
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_OVdmw_PvEeSqRohALvsrgg" name="comb2Ver" incoming="_OVdmyvPvEeSqRohALvsrgg">
-        <annotations xmi:id="_UGaL4PpWEem5wpnPu4aQLQ" key="presenceCondition"/>
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_OVdmxPPvEeSqRohALvsrgg" name="comb3" incoming="_OVdmy_PvEeSqRohALvsrgg" outgoing="_OVdmzPPvEeSqRohALvsrgg _OVdmzfPvEeSqRohALvsrgg">
-        <annotations xmi:id="_atZ48JaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern3 or combPattern4 or combPattern5"/>
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_OVdmxfPvEeSqRohALvsrgg" name="comb3Ver" incoming="_OVdmzPPvEeSqRohALvsrgg">
-        <annotations xmi:id="_bC618JaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern3 or combPattern4 or combPattern5"/>
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_OVdmxvPvEeSqRohALvsrgg" name="comb4" incoming="_OVdmzfPvEeSqRohALvsrgg" outgoing="_OVdmzvPvEeSqRohALvsrgg _QKcLIPPvEeSqRohALvsrgg">
-        <annotations xmi:id="_TrfVYJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern4 or combPattern5"/>
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_OVdmx_PvEeSqRohALvsrgg" name="comb4Ver" incoming="_OVdmzvPvEeSqRohALvsrgg">
-        <annotations xmi:id="_UC4hsJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern4 or combPattern5"/>
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_PeNXQPPvEeSqRohALvsrgg" name="comb5" incoming="_QKcLIPPvEeSqRohALvsrgg" outgoing="_QYo_MPPvEeSqRohALvsrgg">
-        <annotations xmi:id="_UX0P4JaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern5"/>
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_Pk08oPPvEeSqRohALvsrgg" name="comb5Ver" incoming="_QYo_MPPvEeSqRohALvsrgg">
-        <annotations xmi:id="_UzBlMJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern5"/>
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_zaCfIAZEEeq-0oliJiwLkQ" name="test">
-        <annotations xmi:id="_zaP6gAZEEeq-0oliJiwLkQ" key="presenceCondition"/>
-        <type href="grid.ecore#//Grid"/>
-      </nodes>
-      <edges xmi:id="_OVdmyvPvEeSqRohALvsrgg" source="_OVdmwvPvEeSqRohALvsrgg" target="_OVdmw_PvEeSqRohALvsrgg">
-        <annotations xmi:id="_UGV6cPpWEem5wpnPu4aQLQ" key="presenceCondition"/>
-        <type href="grid.ecore#//Node/ver"/>
-      </edges>
-      <edges xmi:id="_OVdmy_PvEeSqRohALvsrgg" source="_OVdmwvPvEeSqRohALvsrgg" target="_OVdmxPPvEeSqRohALvsrgg">
-        <annotations xmi:id="_kf6U0JaIEem9eqq-XCLikw" key="presenceCondition" value="combpattern3 or combpattern4 or combpattern5"/>
-        <type href="grid.ecore#//Node/hor"/>
-      </edges>
-      <edges xmi:id="_OVdmzPPvEeSqRohALvsrgg" source="_OVdmxPPvEeSqRohALvsrgg" target="_OVdmxfPvEeSqRohALvsrgg">
-        <annotations xmi:id="_lPCrsJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern3 or combPattern4 or combPattern5"/>
-        <type href="grid.ecore#//Node/ver"/>
-      </edges>
-      <edges xmi:id="_OVdmzfPvEeSqRohALvsrgg" source="_OVdmxPPvEeSqRohALvsrgg" target="_OVdmxvPvEeSqRohALvsrgg">
-        <annotations xmi:id="_ljxlkJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern4 or combPattern5"/>
-        <type href="grid.ecore#//Node/hor"/>
-      </edges>
-      <edges xmi:id="_OVdmzvPvEeSqRohALvsrgg" source="_OVdmxvPvEeSqRohALvsrgg" target="_OVdmx_PvEeSqRohALvsrgg">
-        <annotations xmi:id="_l4fRUJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern4 or combPattern5"/>
-        <type href="grid.ecore#//Node/ver"/>
-      </edges>
-      <edges xmi:id="_QKcLIPPvEeSqRohALvsrgg" source="_OVdmxvPvEeSqRohALvsrgg" target="_PeNXQPPvEeSqRohALvsrgg">
-        <annotations xmi:id="_mNdbwJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern5"/>
-        <type href="grid.ecore#//Node/hor"/>
-      </edges>
-      <edges xmi:id="_QYo_MPPvEeSqRohALvsrgg" source="_PeNXQPPvEeSqRohALvsrgg" target="_Pk08oPPvEeSqRohALvsrgg">
-        <annotations xmi:id="_miAIYJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern5"/>
-        <type href="grid.ecore#//Node/ver"/>
-      </edges>
-    </lhs>
-    <rhs xmi:id="_OVdmz_PvEeSqRohALvsrgg" name="RHS">
-      <nodes xmi:id="_OVdm0vPvEeSqRohALvsrgg" outgoing="_OVdm2vPvEeSqRohALvsrgg _OVdm2_PvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_OVdm0_PvEeSqRohALvsrgg" incoming="_OVdm2vPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_OVdm1PPvEeSqRohALvsrgg" incoming="_OVdm2_PvEeSqRohALvsrgg" outgoing="_OVdm3PPvEeSqRohALvsrgg _OVdm3fPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_OVdm1fPvEeSqRohALvsrgg" incoming="_OVdm3PPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_OVdm1vPvEeSqRohALvsrgg" incoming="_OVdm3fPvEeSqRohALvsrgg" outgoing="_OVdm3vPvEeSqRohALvsrgg _QKcLIfPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_OVdm1_PvEeSqRohALvsrgg" incoming="_OVdm3vPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_PeNXQfPvEeSqRohALvsrgg" incoming="_QKcLIfPvEeSqRohALvsrgg" outgoing="_QYo_MfPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_Pk08ofPvEeSqRohALvsrgg" incoming="_QYo_MfPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node"/>
-      </nodes>
-      <nodes xmi:id="_zaEUUAZEEeq-0oliJiwLkQ">
-        <type href="grid.ecore#//Grid"/>
-      </nodes>
-      <edges xmi:id="_OVdm2vPvEeSqRohALvsrgg" source="_OVdm0vPvEeSqRohALvsrgg" target="_OVdm0_PvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node/ver"/>
-      </edges>
-      <edges xmi:id="_OVdm2_PvEeSqRohALvsrgg" source="_OVdm0vPvEeSqRohALvsrgg" target="_OVdm1PPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node/hor"/>
-      </edges>
-      <edges xmi:id="_OVdm3PPvEeSqRohALvsrgg" source="_OVdm1PPvEeSqRohALvsrgg" target="_OVdm1fPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node/ver"/>
-      </edges>
-      <edges xmi:id="_OVdm3fPvEeSqRohALvsrgg" source="_OVdm1PPvEeSqRohALvsrgg" target="_OVdm1vPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node/hor"/>
-      </edges>
-      <edges xmi:id="_OVdm3vPvEeSqRohALvsrgg" source="_OVdm1vPvEeSqRohALvsrgg" target="_OVdm1_PvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node/ver"/>
-      </edges>
-      <edges xmi:id="_QKcLIfPvEeSqRohALvsrgg" source="_OVdm1vPvEeSqRohALvsrgg" target="_PeNXQfPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node/hor"/>
-      </edges>
-      <edges xmi:id="_QYo_MfPvEeSqRohALvsrgg" source="_PeNXQfPvEeSqRohALvsrgg" target="_Pk08ofPvEeSqRohALvsrgg">
-        <type href="grid.ecore#//Node/ver"/>
-      </edges>
-    </rhs>
-    <mappings xmi:id="_OVdm4fPvEeSqRohALvsrgg" origin="_OVdmwvPvEeSqRohALvsrgg" image="_OVdm0vPvEeSqRohALvsrgg"/>
-    <mappings xmi:id="_OVdm4vPvEeSqRohALvsrgg" origin="_OVdmw_PvEeSqRohALvsrgg" image="_OVdm0_PvEeSqRohALvsrgg"/>
-    <mappings xmi:id="_OVdm4_PvEeSqRohALvsrgg" origin="_OVdmxPPvEeSqRohALvsrgg" image="_OVdm1PPvEeSqRohALvsrgg"/>
-    <mappings xmi:id="_OVdm5PPvEeSqRohALvsrgg" origin="_OVdmxfPvEeSqRohALvsrgg" image="_OVdm1fPvEeSqRohALvsrgg"/>
-    <mappings xmi:id="_OVdm5fPvEeSqRohALvsrgg" origin="_OVdmxvPvEeSqRohALvsrgg" image="_OVdm1vPvEeSqRohALvsrgg"/>
-    <mappings xmi:id="_OVdm5vPvEeSqRohALvsrgg" origin="_OVdmx_PvEeSqRohALvsrgg" image="_OVdm1_PvEeSqRohALvsrgg"/>
-    <mappings xmi:id="_PeNXQvPvEeSqRohALvsrgg" origin="_PeNXQPPvEeSqRohALvsrgg" image="_PeNXQfPvEeSqRohALvsrgg"/>
-    <mappings xmi:id="_Pk08ovPvEeSqRohALvsrgg" origin="_Pk08oPPvEeSqRohALvsrgg" image="_Pk08ofPvEeSqRohALvsrgg"/>
-    <mappings xmi:id="_zaEUUQZEEeq-0oliJiwLkQ" origin="_zaCfIAZEEeq-0oliJiwLkQ" image="_zaEUUAZEEeq-0oliJiwLkQ"/>
-  </units>
-  <units xsi:type="henshin:Rule" xmi:id="_3nCLYAZBEeqhdr1yv25vOw" name="test">
-    <annotations xmi:id="_3ncbEAZBEeqhdr1yv25vOw" key="featureModel"/>
-    <annotations xmi:id="_3nmzIAZBEeqhdr1yv25vOw" key="injectiveMatchingPresenceCondition"/>
-    <annotations xmi:id="_3nrEkAZBEeqhdr1yv25vOw" key="features"/>
-    <lhs xmi:id="_3nHq8AZBEeqhdr1yv25vOw" name="Lhs"/>
-    <rhs xmi:id="_3nHq8QZBEeqhdr1yv25vOw" name="Rhs"/>
-  </units>
-</henshin:Module>
+<?xml version="1.0" encoding="UTF-8"?>

+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_q2mewKo1EeGWmNM0TiX1dQ">

+  <imports href="grid.ecore#/"/>

+  <units xsi:type="henshin:Rule" xmi:id="_OVdmvvPvEeSqRohALvsrgg" name="combPattern">

+    <annotations xmi:id="_Be-oAJaQEemUmuWcLbh5qQ" key="featureConstraint" value="xor(combPattern3, combPattern4, combPattern5)"/>

+    <annotations xmi:id="_Be-oAZaQEemUmuWcLbh5qQ" key="features" value="combPattern3, combPattern4, combPattern5"/>

+    <annotations xmi:id="_QirmcPpWEem5wpnPu4aQLQ" key="injectiveMatchingPresenceCondition"/>

+    <lhs xmi:id="_OVdmv_PvEeSqRohALvsrgg" name="LHS">

+      <nodes xmi:id="_OVdmwvPvEeSqRohALvsrgg" name="comb2" outgoing="_OVdmyvPvEeSqRohALvsrgg _OVdmy_PvEeSqRohALvsrgg">

+        <annotations xmi:id="_UGRpAPpWEem5wpnPu4aQLQ" key="presenceCondition"/>

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_OVdmw_PvEeSqRohALvsrgg" name="comb2Ver" incoming="_OVdmyvPvEeSqRohALvsrgg">

+        <annotations xmi:id="_UGaL4PpWEem5wpnPu4aQLQ" key="presenceCondition"/>

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_OVdmxPPvEeSqRohALvsrgg" name="comb3" incoming="_OVdmy_PvEeSqRohALvsrgg" outgoing="_OVdmzPPvEeSqRohALvsrgg _OVdmzfPvEeSqRohALvsrgg">

+        <annotations xmi:id="_atZ48JaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern3 or combPattern4 or combPattern5"/>

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_OVdmxfPvEeSqRohALvsrgg" name="comb3Ver" incoming="_OVdmzPPvEeSqRohALvsrgg">

+        <annotations xmi:id="_bC618JaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern3 or combPattern4 or combPattern5"/>

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_OVdmxvPvEeSqRohALvsrgg" name="comb4" incoming="_OVdmzfPvEeSqRohALvsrgg" outgoing="_OVdmzvPvEeSqRohALvsrgg _QKcLIPPvEeSqRohALvsrgg">

+        <annotations xmi:id="_TrfVYJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern4 or combPattern5"/>

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_OVdmx_PvEeSqRohALvsrgg" name="comb4Ver" incoming="_OVdmzvPvEeSqRohALvsrgg">

+        <annotations xmi:id="_UC4hsJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern4 or combPattern5"/>

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_PeNXQPPvEeSqRohALvsrgg" name="comb5" incoming="_QKcLIPPvEeSqRohALvsrgg" outgoing="_QYo_MPPvEeSqRohALvsrgg">

+        <annotations xmi:id="_UX0P4JaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern5"/>

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_Pk08oPPvEeSqRohALvsrgg" name="comb5Ver" incoming="_QYo_MPPvEeSqRohALvsrgg">

+        <annotations xmi:id="_UzBlMJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern5"/>

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_zaCfIAZEEeq-0oliJiwLkQ" name="test">

+        <annotations xmi:id="_zaP6gAZEEeq-0oliJiwLkQ" key="presenceCondition"/>

+        <type href="grid.ecore#//Grid"/>

+      </nodes>

+      <edges xmi:id="_OVdmyvPvEeSqRohALvsrgg" source="_OVdmwvPvEeSqRohALvsrgg" target="_OVdmw_PvEeSqRohALvsrgg">

+        <annotations xmi:id="_UGV6cPpWEem5wpnPu4aQLQ" key="presenceCondition"/>

+        <type href="grid.ecore#//Node/ver"/>

+      </edges>

+      <edges xmi:id="_OVdmy_PvEeSqRohALvsrgg" source="_OVdmwvPvEeSqRohALvsrgg" target="_OVdmxPPvEeSqRohALvsrgg">

+        <annotations xmi:id="_kf6U0JaIEem9eqq-XCLikw" key="presenceCondition" value="combpattern3 or combpattern4 or combpattern5"/>

+        <type href="grid.ecore#//Node/hor"/>

+      </edges>

+      <edges xmi:id="_OVdmzPPvEeSqRohALvsrgg" source="_OVdmxPPvEeSqRohALvsrgg" target="_OVdmxfPvEeSqRohALvsrgg">

+        <annotations xmi:id="_lPCrsJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern3 or combPattern4 or combPattern5"/>

+        <type href="grid.ecore#//Node/ver"/>

+      </edges>

+      <edges xmi:id="_OVdmzfPvEeSqRohALvsrgg" source="_OVdmxPPvEeSqRohALvsrgg" target="_OVdmxvPvEeSqRohALvsrgg">

+        <annotations xmi:id="_ljxlkJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern4 or combPattern5"/>

+        <type href="grid.ecore#//Node/hor"/>

+      </edges>

+      <edges xmi:id="_OVdmzvPvEeSqRohALvsrgg" source="_OVdmxvPvEeSqRohALvsrgg" target="_OVdmx_PvEeSqRohALvsrgg">

+        <annotations xmi:id="_l4fRUJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern4 or combPattern5"/>

+        <type href="grid.ecore#//Node/ver"/>

+      </edges>

+      <edges xmi:id="_QKcLIPPvEeSqRohALvsrgg" source="_OVdmxvPvEeSqRohALvsrgg" target="_PeNXQPPvEeSqRohALvsrgg">

+        <annotations xmi:id="_mNdbwJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern5"/>

+        <type href="grid.ecore#//Node/hor"/>

+      </edges>

+      <edges xmi:id="_QYo_MPPvEeSqRohALvsrgg" source="_PeNXQPPvEeSqRohALvsrgg" target="_Pk08oPPvEeSqRohALvsrgg">

+        <annotations xmi:id="_miAIYJaIEem9eqq-XCLikw" key="presenceCondition" value="combPattern5"/>

+        <type href="grid.ecore#//Node/ver"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_OVdmz_PvEeSqRohALvsrgg" name="RHS">

+      <nodes xmi:id="_OVdm0vPvEeSqRohALvsrgg" outgoing="_OVdm2vPvEeSqRohALvsrgg _OVdm2_PvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_OVdm0_PvEeSqRohALvsrgg" incoming="_OVdm2vPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_OVdm1PPvEeSqRohALvsrgg" incoming="_OVdm2_PvEeSqRohALvsrgg" outgoing="_OVdm3PPvEeSqRohALvsrgg _OVdm3fPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_OVdm1fPvEeSqRohALvsrgg" incoming="_OVdm3PPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_OVdm1vPvEeSqRohALvsrgg" incoming="_OVdm3fPvEeSqRohALvsrgg" outgoing="_OVdm3vPvEeSqRohALvsrgg _QKcLIfPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_OVdm1_PvEeSqRohALvsrgg" incoming="_OVdm3vPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_PeNXQfPvEeSqRohALvsrgg" incoming="_QKcLIfPvEeSqRohALvsrgg" outgoing="_QYo_MfPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_Pk08ofPvEeSqRohALvsrgg" incoming="_QYo_MfPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node"/>

+      </nodes>

+      <nodes xmi:id="_zaEUUAZEEeq-0oliJiwLkQ">

+        <type href="grid.ecore#//Grid"/>

+      </nodes>

+      <edges xmi:id="_OVdm2vPvEeSqRohALvsrgg" source="_OVdm0vPvEeSqRohALvsrgg" target="_OVdm0_PvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node/ver"/>

+      </edges>

+      <edges xmi:id="_OVdm2_PvEeSqRohALvsrgg" source="_OVdm0vPvEeSqRohALvsrgg" target="_OVdm1PPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node/hor"/>

+      </edges>

+      <edges xmi:id="_OVdm3PPvEeSqRohALvsrgg" source="_OVdm1PPvEeSqRohALvsrgg" target="_OVdm1fPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node/ver"/>

+      </edges>

+      <edges xmi:id="_OVdm3fPvEeSqRohALvsrgg" source="_OVdm1PPvEeSqRohALvsrgg" target="_OVdm1vPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node/hor"/>

+      </edges>

+      <edges xmi:id="_OVdm3vPvEeSqRohALvsrgg" source="_OVdm1vPvEeSqRohALvsrgg" target="_OVdm1_PvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node/ver"/>

+      </edges>

+      <edges xmi:id="_QKcLIfPvEeSqRohALvsrgg" source="_OVdm1vPvEeSqRohALvsrgg" target="_PeNXQfPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node/hor"/>

+      </edges>

+      <edges xmi:id="_QYo_MfPvEeSqRohALvsrgg" source="_PeNXQfPvEeSqRohALvsrgg" target="_Pk08ofPvEeSqRohALvsrgg">

+        <type href="grid.ecore#//Node/ver"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_OVdm4fPvEeSqRohALvsrgg" origin="_OVdmwvPvEeSqRohALvsrgg" image="_OVdm0vPvEeSqRohALvsrgg"/>

+    <mappings xmi:id="_OVdm4vPvEeSqRohALvsrgg" origin="_OVdmw_PvEeSqRohALvsrgg" image="_OVdm0_PvEeSqRohALvsrgg"/>

+    <mappings xmi:id="_OVdm4_PvEeSqRohALvsrgg" origin="_OVdmxPPvEeSqRohALvsrgg" image="_OVdm1PPvEeSqRohALvsrgg"/>

+    <mappings xmi:id="_OVdm5PPvEeSqRohALvsrgg" origin="_OVdmxfPvEeSqRohALvsrgg" image="_OVdm1fPvEeSqRohALvsrgg"/>

+    <mappings xmi:id="_OVdm5fPvEeSqRohALvsrgg" origin="_OVdmxvPvEeSqRohALvsrgg" image="_OVdm1vPvEeSqRohALvsrgg"/>

+    <mappings xmi:id="_OVdm5vPvEeSqRohALvsrgg" origin="_OVdmx_PvEeSqRohALvsrgg" image="_OVdm1_PvEeSqRohALvsrgg"/>

+    <mappings xmi:id="_PeNXQvPvEeSqRohALvsrgg" origin="_PeNXQPPvEeSqRohALvsrgg" image="_PeNXQfPvEeSqRohALvsrgg"/>

+    <mappings xmi:id="_Pk08ovPvEeSqRohALvsrgg" origin="_Pk08oPPvEeSqRohALvsrgg" image="_Pk08ofPvEeSqRohALvsrgg"/>

+    <mappings xmi:id="_zaEUUQZEEeq-0oliJiwLkQ" origin="_zaCfIAZEEeq-0oliJiwLkQ" image="_zaEUUAZEEeq-0oliJiwLkQ"/>

+  </units>

+  <units xsi:type="henshin:Rule" xmi:id="_3nCLYAZBEeqhdr1yv25vOw" name="test">

+    <annotations xmi:id="_3ncbEAZBEeqhdr1yv25vOw" key="featureConstraint"/>

+    <annotations xmi:id="_3nmzIAZBEeqhdr1yv25vOw" key="injectiveMatchingPresenceCondition"/>

+    <annotations xmi:id="_3nrEkAZBEeqhdr1yv25vOw" key="features"/>

+    <lhs xmi:id="_3nHq8AZBEeqhdr1yv25vOw" name="Lhs"/>

+    <rhs xmi:id="_3nHq8QZBEeqhdr1yv25vOw" name="Rhs"/>

+  </units>

+</henshin:Module>

diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/inconsistent.henshin b/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/inconsistent.henshin
index 04363ac..bad8399 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/inconsistent.henshin
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/inconsistent.henshin
@@ -1,73 +1,73 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_EMSTsBBeEeqGYoBEYurJJg">
-  <imports href="Java.ecore#/"/>
-  <units xsi:type="henshin:Rule" xmi:id="_FRXFYBBeEeqGYoBEYurJJg" name="preserve">
-    <annotations xmi:id="_FR3bsBBeEeqGYoBEYurJJg" key="featureModel" value="(M and not F) or (not M and F)"/>
-    <annotations xmi:id="_FR3bsRBeEeqGYoBEYurJJg" key="injectiveMatchingPresenceCondition" value=""/>
-    <annotations xmi:id="_FR4CwBBeEeqGYoBEYurJJg" key="features" value="M, X"/>
-    <lhs xmi:id="_FRfoQBBeEeqGYoBEYurJJg" name="Lhs">
-      <nodes xmi:id="_HA034BBeEeqGYoBEYurJJg" outgoing="_IognYBBeEeqGYoBEYurJJg _q4RgMBG6Eeqxptn-OOol6g _xlRjsBG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_c5FogBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_Hz_aMBBeEeqGYoBEYurJJg" incoming="_IognYBBeEeqGYoBEYurJJg">
-        <annotations xmi:id="_c5Ir0BG6Eeqxptn-OOol6g" key="presenceCondition" value="M"/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_pOdpwBG6Eeqxptn-OOol6g" incoming="_q4RgMBG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_pOmzsBG6Eeqxptn-OOol6g" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <nodes xmi:id="_wMfL0BG6Eeqxptn-OOol6g" incoming="_xlRjsBG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_wMgZ8BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <edges xmi:id="_IognYBBeEeqGYoBEYurJJg" source="_HA034BBeEeqGYoBEYurJJg" target="_Hz_aMBBeEeqGYoBEYurJJg">
-        <annotations xmi:id="_c5JS4BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_q4RgMBG6Eeqxptn-OOol6g" source="_HA034BBeEeqGYoBEYurJJg" target="_pOdpwBG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_q4sW8BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_xlRjsBG6Eeqxptn-OOol6g" source="_HA034BBeEeqGYoBEYurJJg" target="_wMfL0BG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_xlSKwBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-    </lhs>
-    <rhs xmi:id="_FRfoQRBeEeqGYoBEYurJJg" name="Rhs">
-      <nodes xmi:id="_HA1e8BBeEeqGYoBEYurJJg" outgoing="_IognYRBeEeqGYoBEYurJJg _q4SHQBG6Eeqxptn-OOol6g _xlRjsRG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_c5J58BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_Hz_aMRBeEeqGYoBEYurJJg" incoming="_IognYRBeEeqGYoBEYurJJg">
-        <annotations xmi:id="_c5J58RG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_pOeQ0BG6Eeqxptn-OOol6g" incoming="_q4SHQBG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_pOqeEBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <nodes xmi:id="_wMfy4BG6Eeqxptn-OOol6g" incoming="_xlRjsRG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_wMi2MBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <edges xmi:id="_IognYRBeEeqGYoBEYurJJg" source="_HA1e8BBeEeqGYoBEYurJJg" target="_Hz_aMRBeEeqGYoBEYurJJg">
-        <annotations xmi:id="_c5J58hG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_q4SHQBG6Eeqxptn-OOol6g" source="_HA1e8BBeEeqGYoBEYurJJg" target="_pOeQ0BG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_q4uMIBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_xlRjsRG6Eeqxptn-OOol6g" source="_HA1e8BBeEeqGYoBEYurJJg" target="_wMfy4BG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_xlTY4BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-    </rhs>
-    <mappings xmi:id="_HA1e8RBeEeqGYoBEYurJJg" origin="_HA034BBeEeqGYoBEYurJJg" image="_HA1e8BBeEeqGYoBEYurJJg"/>
-    <mappings xmi:id="_H0ABQBBeEeqGYoBEYurJJg" origin="_Hz_aMBBeEeqGYoBEYurJJg" image="_Hz_aMRBeEeqGYoBEYurJJg"/>
-    <mappings xmi:id="_pOe34BG6Eeqxptn-OOol6g" origin="_pOdpwBG6Eeqxptn-OOol6g" image="_pOeQ0BG6Eeqxptn-OOol6g"/>
-    <mappings xmi:id="_wMfy4RG6Eeqxptn-OOol6g" origin="_wMfL0BG6Eeqxptn-OOol6g" image="_wMfy4BG6Eeqxptn-OOol6g"/>
-  </units>
-</henshin:Module>
+<?xml version="1.0" encoding="UTF-8"?>

+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_EMSTsBBeEeqGYoBEYurJJg">

+  <imports href="Java.ecore#/"/>

+  <units xsi:type="henshin:Rule" xmi:id="_FRXFYBBeEeqGYoBEYurJJg" name="preserve">

+    <annotations xmi:id="_FR3bsBBeEeqGYoBEYurJJg" key="featureConstraint" value="(M and not F) or (not M and F)"/>

+    <annotations xmi:id="_FR3bsRBeEeqGYoBEYurJJg" key="injectiveMatchingPresenceCondition" value=""/>

+    <annotations xmi:id="_FR4CwBBeEeqGYoBEYurJJg" key="features" value="M, X"/>

+    <lhs xmi:id="_FRfoQBBeEeqGYoBEYurJJg" name="Lhs">

+      <nodes xmi:id="_HA034BBeEeqGYoBEYurJJg" outgoing="_IognYBBeEeqGYoBEYurJJg _q4RgMBG6Eeqxptn-OOol6g _xlRjsBG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_c5FogBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_Hz_aMBBeEeqGYoBEYurJJg" incoming="_IognYBBeEeqGYoBEYurJJg">

+        <annotations xmi:id="_c5Ir0BG6Eeqxptn-OOol6g" key="presenceCondition" value="M"/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_pOdpwBG6Eeqxptn-OOol6g" incoming="_q4RgMBG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_pOmzsBG6Eeqxptn-OOol6g" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <nodes xmi:id="_wMfL0BG6Eeqxptn-OOol6g" incoming="_xlRjsBG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_wMgZ8BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <edges xmi:id="_IognYBBeEeqGYoBEYurJJg" source="_HA034BBeEeqGYoBEYurJJg" target="_Hz_aMBBeEeqGYoBEYurJJg">

+        <annotations xmi:id="_c5JS4BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_q4RgMBG6Eeqxptn-OOol6g" source="_HA034BBeEeqGYoBEYurJJg" target="_pOdpwBG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_q4sW8BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_xlRjsBG6Eeqxptn-OOol6g" source="_HA034BBeEeqGYoBEYurJJg" target="_wMfL0BG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_xlSKwBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_FRfoQRBeEeqGYoBEYurJJg" name="Rhs">

+      <nodes xmi:id="_HA1e8BBeEeqGYoBEYurJJg" outgoing="_IognYRBeEeqGYoBEYurJJg _q4SHQBG6Eeqxptn-OOol6g _xlRjsRG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_c5J58BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_Hz_aMRBeEeqGYoBEYurJJg" incoming="_IognYRBeEeqGYoBEYurJJg">

+        <annotations xmi:id="_c5J58RG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_pOeQ0BG6Eeqxptn-OOol6g" incoming="_q4SHQBG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_pOqeEBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <nodes xmi:id="_wMfy4BG6Eeqxptn-OOol6g" incoming="_xlRjsRG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_wMi2MBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <edges xmi:id="_IognYRBeEeqGYoBEYurJJg" source="_HA1e8BBeEeqGYoBEYurJJg" target="_Hz_aMRBeEeqGYoBEYurJJg">

+        <annotations xmi:id="_c5J58hG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_q4SHQBG6Eeqxptn-OOol6g" source="_HA1e8BBeEeqGYoBEYurJJg" target="_pOeQ0BG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_q4uMIBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_xlRjsRG6Eeqxptn-OOol6g" source="_HA1e8BBeEeqGYoBEYurJJg" target="_wMfy4BG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_xlTY4BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_HA1e8RBeEeqGYoBEYurJJg" origin="_HA034BBeEeqGYoBEYurJJg" image="_HA1e8BBeEeqGYoBEYurJJg"/>

+    <mappings xmi:id="_H0ABQBBeEeqGYoBEYurJJg" origin="_Hz_aMBBeEeqGYoBEYurJJg" image="_Hz_aMRBeEeqGYoBEYurJJg"/>

+    <mappings xmi:id="_pOe34BG6Eeqxptn-OOol6g" origin="_pOdpwBG6Eeqxptn-OOol6g" image="_pOeQ0BG6Eeqxptn-OOol6g"/>

+    <mappings xmi:id="_wMfy4RG6Eeqxptn-OOol6g" origin="_wMfL0BG6Eeqxptn-OOol6g" image="_wMfy4BG6Eeqxptn-OOol6g"/>

+  </units>

+</henshin:Module>

diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/non-vb.henshin b/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/non-vb.henshin
index c3316bc..52078df 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/non-vb.henshin
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/non-vb.henshin
@@ -1,101 +1,101 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_QYMFABHAEeqxptn-OOol6g">
-  <imports href="Java.ecore#/"/>
-  <units xsi:type="henshin:Rule" xmi:id="_RDazUBHAEeqxptn-OOol6g" name="preserve">
-    <annotations xmi:id="_RD6ikBHAEeqxptn-OOol6g" key="featureModel" value=""/>
-    <annotations xmi:id="_RD6ikRHAEeqxptn-OOol6g" key="injectiveMatchingPresenceCondition" value=""/>
-    <annotations xmi:id="_RD7JoBHAEeqxptn-OOol6g" key="features" value=""/>
-    <lhs xmi:id="_RDkkUBHAEeqxptn-OOol6g" name="Lhs">
-      <nodes xmi:id="_SDDrYBHAEeqxptn-OOol6g" outgoing="_Uon_cBHAEeqxptn-OOol6g _VHVUsBHAEeqxptn-OOol6g">
-        <annotations xmi:id="_SDE5gBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_ScrsUBHAEeqxptn-OOol6g" incoming="_VHVUsBHAEeqxptn-OOol6g">
-        <annotations xmi:id="_ScsTYRHAEeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_SxPAABHAEeqxptn-OOol6g" incoming="_Uon_cBHAEeqxptn-OOol6g">
-        <annotations xmi:id="_SxPnEBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <edges xmi:id="_Uon_cBHAEeqxptn-OOol6g" source="_SDDrYBHAEeqxptn-OOol6g" target="_SxPAABHAEeqxptn-OOol6g">
-        <annotations xmi:id="_UoomgRHAEeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_VHVUsBHAEeqxptn-OOol6g" source="_SDDrYBHAEeqxptn-OOol6g" target="_ScrsUBHAEeqxptn-OOol6g">
-        <annotations xmi:id="_VHWi0BHAEeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-    </lhs>
-    <rhs xmi:id="_RDkkURHAEeqxptn-OOol6g" name="Rhs">
-      <nodes xmi:id="_SDDrYRHAEeqxptn-OOol6g" outgoing="_UoomgBHAEeqxptn-OOol6g _VHVUsRHAEeqxptn-OOol6g">
-        <annotations xmi:id="_SDLnMBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_ScrsURHAEeqxptn-OOol6g" incoming="_VHVUsRHAEeqxptn-OOol6g">
-        <annotations xmi:id="_ScuIkBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_SxPAARHAEeqxptn-OOol6g" incoming="_UoomgBHAEeqxptn-OOol6g">
-        <annotations xmi:id="_SxT4gBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <edges xmi:id="_UoomgBHAEeqxptn-OOol6g" source="_SDDrYRHAEeqxptn-OOol6g" target="_SxPAARHAEeqxptn-OOol6g">
-        <annotations xmi:id="_UopNkBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_VHVUsRHAEeqxptn-OOol6g" source="_SDDrYRHAEeqxptn-OOol6g" target="_ScrsURHAEeqxptn-OOol6g">
-        <annotations xmi:id="_VHXw8BHAEeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-    </rhs>
-    <mappings xmi:id="_SDDrYhHAEeqxptn-OOol6g" origin="_SDDrYBHAEeqxptn-OOol6g" image="_SDDrYRHAEeqxptn-OOol6g"/>
-    <mappings xmi:id="_ScsTYBHAEeqxptn-OOol6g" origin="_ScrsUBHAEeqxptn-OOol6g" image="_ScrsURHAEeqxptn-OOol6g"/>
-    <mappings xmi:id="_SxPAAhHAEeqxptn-OOol6g" origin="_SxPAABHAEeqxptn-OOol6g" image="_SxPAARHAEeqxptn-OOol6g"/>
-  </units>
-  <units xsi:type="henshin:Rule" xmi:id="_0swUMBHJEeqgupJREgJjUg" name="create">
-    <lhs xmi:id="_0tFrYBHJEeqgupJREgJjUg" name="Lhs">
-      <nodes xmi:id="_2p-14BHJEeqgupJREgJjUg" outgoing="_5ZBPABHJEeqgupJREgJjUg _5rzBEBHJEeqgupJREgJjUg">
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_3uGlUBHJEeqgupJREgJjUg" incoming="_5ZBPABHJEeqgupJREgJjUg">
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_4xhxMBHJEeqgupJREgJjUg" incoming="_5rzBEBHJEeqgupJREgJjUg">
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <edges xmi:id="_5ZBPABHJEeqgupJREgJjUg" source="_2p-14BHJEeqgupJREgJjUg" target="_3uGlUBHJEeqgupJREgJjUg">
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_5rzBEBHJEeqgupJREgJjUg" source="_2p-14BHJEeqgupJREgJjUg" target="_4xhxMBHJEeqgupJREgJjUg">
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-    </lhs>
-    <rhs xmi:id="_0tFrYRHJEeqgupJREgJjUg" name="Rhs">
-      <nodes xmi:id="_2p-14RHJEeqgupJREgJjUg" outgoing="_5ZB2EBHJEeqgupJREgJjUg _5rzBERHJEeqgupJREgJjUg">
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_3uHMYBHJEeqgupJREgJjUg" incoming="_5ZB2EBHJEeqgupJREgJjUg" outgoing="_BGnM0BHKEeqgupJREgJjUg">
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_4xiYQBHJEeqgupJREgJjUg" incoming="_5rzBERHJEeqgupJREgJjUg">
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <nodes xmi:id="_7sqsoBHJEeqgupJREgJjUg" incoming="_BGnM0BHKEeqgupJREgJjUg">
-        <type href="Java.ecore#//Annotation"/>
-      </nodes>
-      <edges xmi:id="_5ZB2EBHJEeqgupJREgJjUg" source="_2p-14RHJEeqgupJREgJjUg" target="_3uHMYBHJEeqgupJREgJjUg">
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_5rzBERHJEeqgupJREgJjUg" source="_2p-14RHJEeqgupJREgJjUg" target="_4xiYQBHJEeqgupJREgJjUg">
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_BGnM0BHKEeqgupJREgJjUg" source="_3uHMYBHJEeqgupJREgJjUg" target="_7sqsoBHJEeqgupJREgJjUg">
-        <type href="Java.ecore#//Method/annotation"/>
-      </edges>
-    </rhs>
-    <mappings xmi:id="_2p-14hHJEeqgupJREgJjUg" origin="_2p-14BHJEeqgupJREgJjUg" image="_2p-14RHJEeqgupJREgJjUg"/>
-    <mappings xmi:id="_3uHMYRHJEeqgupJREgJjUg" origin="_3uGlUBHJEeqgupJREgJjUg" image="_3uHMYBHJEeqgupJREgJjUg"/>
-    <mappings xmi:id="_4xiYQRHJEeqgupJREgJjUg" origin="_4xhxMBHJEeqgupJREgJjUg" image="_4xiYQBHJEeqgupJREgJjUg"/>
-  </units>
-</henshin:Module>
+<?xml version="1.0" encoding="UTF-8"?>

+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_QYMFABHAEeqxptn-OOol6g">

+  <imports href="Java.ecore#/"/>

+  <units xsi:type="henshin:Rule" xmi:id="_RDazUBHAEeqxptn-OOol6g" name="preserve">

+    <annotations xmi:id="_RD6ikBHAEeqxptn-OOol6g" key="featureConstraint" value=""/>

+    <annotations xmi:id="_RD6ikRHAEeqxptn-OOol6g" key="injectiveMatchingPresenceCondition" value=""/>

+    <annotations xmi:id="_RD7JoBHAEeqxptn-OOol6g" key="features" value=""/>

+    <lhs xmi:id="_RDkkUBHAEeqxptn-OOol6g" name="Lhs">

+      <nodes xmi:id="_SDDrYBHAEeqxptn-OOol6g" outgoing="_Uon_cBHAEeqxptn-OOol6g _VHVUsBHAEeqxptn-OOol6g">

+        <annotations xmi:id="_SDE5gBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_ScrsUBHAEeqxptn-OOol6g" incoming="_VHVUsBHAEeqxptn-OOol6g">

+        <annotations xmi:id="_ScsTYRHAEeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_SxPAABHAEeqxptn-OOol6g" incoming="_Uon_cBHAEeqxptn-OOol6g">

+        <annotations xmi:id="_SxPnEBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <edges xmi:id="_Uon_cBHAEeqxptn-OOol6g" source="_SDDrYBHAEeqxptn-OOol6g" target="_SxPAABHAEeqxptn-OOol6g">

+        <annotations xmi:id="_UoomgRHAEeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_VHVUsBHAEeqxptn-OOol6g" source="_SDDrYBHAEeqxptn-OOol6g" target="_ScrsUBHAEeqxptn-OOol6g">

+        <annotations xmi:id="_VHWi0BHAEeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_RDkkURHAEeqxptn-OOol6g" name="Rhs">

+      <nodes xmi:id="_SDDrYRHAEeqxptn-OOol6g" outgoing="_UoomgBHAEeqxptn-OOol6g _VHVUsRHAEeqxptn-OOol6g">

+        <annotations xmi:id="_SDLnMBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_ScrsURHAEeqxptn-OOol6g" incoming="_VHVUsRHAEeqxptn-OOol6g">

+        <annotations xmi:id="_ScuIkBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_SxPAARHAEeqxptn-OOol6g" incoming="_UoomgBHAEeqxptn-OOol6g">

+        <annotations xmi:id="_SxT4gBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <edges xmi:id="_UoomgBHAEeqxptn-OOol6g" source="_SDDrYRHAEeqxptn-OOol6g" target="_SxPAARHAEeqxptn-OOol6g">

+        <annotations xmi:id="_UopNkBHAEeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_VHVUsRHAEeqxptn-OOol6g" source="_SDDrYRHAEeqxptn-OOol6g" target="_ScrsURHAEeqxptn-OOol6g">

+        <annotations xmi:id="_VHXw8BHAEeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_SDDrYhHAEeqxptn-OOol6g" origin="_SDDrYBHAEeqxptn-OOol6g" image="_SDDrYRHAEeqxptn-OOol6g"/>

+    <mappings xmi:id="_ScsTYBHAEeqxptn-OOol6g" origin="_ScrsUBHAEeqxptn-OOol6g" image="_ScrsURHAEeqxptn-OOol6g"/>

+    <mappings xmi:id="_SxPAAhHAEeqxptn-OOol6g" origin="_SxPAABHAEeqxptn-OOol6g" image="_SxPAARHAEeqxptn-OOol6g"/>

+  </units>

+  <units xsi:type="henshin:Rule" xmi:id="_0swUMBHJEeqgupJREgJjUg" name="create">

+    <lhs xmi:id="_0tFrYBHJEeqgupJREgJjUg" name="Lhs">

+      <nodes xmi:id="_2p-14BHJEeqgupJREgJjUg" outgoing="_5ZBPABHJEeqgupJREgJjUg _5rzBEBHJEeqgupJREgJjUg">

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_3uGlUBHJEeqgupJREgJjUg" incoming="_5ZBPABHJEeqgupJREgJjUg">

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_4xhxMBHJEeqgupJREgJjUg" incoming="_5rzBEBHJEeqgupJREgJjUg">

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <edges xmi:id="_5ZBPABHJEeqgupJREgJjUg" source="_2p-14BHJEeqgupJREgJjUg" target="_3uGlUBHJEeqgupJREgJjUg">

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_5rzBEBHJEeqgupJREgJjUg" source="_2p-14BHJEeqgupJREgJjUg" target="_4xhxMBHJEeqgupJREgJjUg">

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_0tFrYRHJEeqgupJREgJjUg" name="Rhs">

+      <nodes xmi:id="_2p-14RHJEeqgupJREgJjUg" outgoing="_5ZB2EBHJEeqgupJREgJjUg _5rzBERHJEeqgupJREgJjUg">

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_3uHMYBHJEeqgupJREgJjUg" incoming="_5ZB2EBHJEeqgupJREgJjUg" outgoing="_BGnM0BHKEeqgupJREgJjUg">

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_4xiYQBHJEeqgupJREgJjUg" incoming="_5rzBERHJEeqgupJREgJjUg">

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <nodes xmi:id="_7sqsoBHJEeqgupJREgJjUg" incoming="_BGnM0BHKEeqgupJREgJjUg">

+        <type href="Java.ecore#//Annotation"/>

+      </nodes>

+      <edges xmi:id="_5ZB2EBHJEeqgupJREgJjUg" source="_2p-14RHJEeqgupJREgJjUg" target="_3uHMYBHJEeqgupJREgJjUg">

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_5rzBERHJEeqgupJREgJjUg" source="_2p-14RHJEeqgupJREgJjUg" target="_4xiYQBHJEeqgupJREgJjUg">

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_BGnM0BHKEeqgupJREgJjUg" source="_3uHMYBHJEeqgupJREgJjUg" target="_7sqsoBHJEeqgupJREgJjUg">

+        <type href="Java.ecore#//Method/annotation"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_2p-14hHJEeqgupJREgJjUg" origin="_2p-14BHJEeqgupJREgJjUg" image="_2p-14RHJEeqgupJREgJjUg"/>

+    <mappings xmi:id="_3uHMYRHJEeqgupJREgJjUg" origin="_3uGlUBHJEeqgupJREgJjUg" image="_3uHMYBHJEeqgupJREgJjUg"/>

+    <mappings xmi:id="_4xiYQRHJEeqgupJREgJjUg" origin="_4xhxMBHJEeqgupJREgJjUg" image="_4xiYQBHJEeqgupJREgJjUg"/>

+  </units>

+</henshin:Module>

diff --git a/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/vb.henshin b/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/vb.henshin
index d60436a..f441460 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/vb.henshin
+++ b/plugins/variability/org.eclipse.emf.henshin.variability.test/data/java/vb.henshin
@@ -1,346 +1,346 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_EMSTsBBeEeqGYoBEYurJJg">
-  <imports href="Java.ecore#/"/>
-  <units xsi:type="henshin:Rule" xmi:id="_FRXFYBBeEeqGYoBEYurJJg" name="preserve">
-    <annotations xmi:id="_FR3bsBBeEeqGYoBEYurJJg" key="featureModel" value="(M and not F) or (not M and F)"/>
-    <annotations xmi:id="_FR3bsRBeEeqGYoBEYurJJg" key="injectiveMatchingPresenceCondition" value=""/>
-    <annotations xmi:id="_FR4CwBBeEeqGYoBEYurJJg" key="features" value="M, F"/>
-    <lhs xmi:id="_FRfoQBBeEeqGYoBEYurJJg" name="Lhs">
-      <nodes xmi:id="_HA034BBeEeqGYoBEYurJJg" outgoing="_IognYBBeEeqGYoBEYurJJg _q4RgMBG6Eeqxptn-OOol6g _xlRjsBG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_c5FogBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_Hz_aMBBeEeqGYoBEYurJJg" incoming="_IognYBBeEeqGYoBEYurJJg">
-        <annotations xmi:id="_c5Ir0BG6Eeqxptn-OOol6g" key="presenceCondition" value="M"/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_pOdpwBG6Eeqxptn-OOol6g" incoming="_q4RgMBG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_pOmzsBG6Eeqxptn-OOol6g" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <nodes xmi:id="_wMfL0BG6Eeqxptn-OOol6g" incoming="_xlRjsBG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_wMgZ8BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <edges xmi:id="_IognYBBeEeqGYoBEYurJJg" source="_HA034BBeEeqGYoBEYurJJg" target="_Hz_aMBBeEeqGYoBEYurJJg">
-        <annotations xmi:id="_c5JS4BG6Eeqxptn-OOol6g" key="presenceCondition" value="M"/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_q4RgMBG6Eeqxptn-OOol6g" source="_HA034BBeEeqGYoBEYurJJg" target="_pOdpwBG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_q4sW8BG6Eeqxptn-OOol6g" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_xlRjsBG6Eeqxptn-OOol6g" source="_HA034BBeEeqGYoBEYurJJg" target="_wMfL0BG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_xlSKwBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-    </lhs>
-    <rhs xmi:id="_FRfoQRBeEeqGYoBEYurJJg" name="Rhs">
-      <nodes xmi:id="_HA1e8BBeEeqGYoBEYurJJg" outgoing="_IognYRBeEeqGYoBEYurJJg _q4SHQBG6Eeqxptn-OOol6g _xlRjsRG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_c5J58BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_Hz_aMRBeEeqGYoBEYurJJg" incoming="_IognYRBeEeqGYoBEYurJJg">
-        <annotations xmi:id="_c5J58RG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_pOeQ0BG6Eeqxptn-OOol6g" incoming="_q4SHQBG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_pOqeEBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <nodes xmi:id="_wMfy4BG6Eeqxptn-OOol6g" incoming="_xlRjsRG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_wMi2MBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <edges xmi:id="_IognYRBeEeqGYoBEYurJJg" source="_HA1e8BBeEeqGYoBEYurJJg" target="_Hz_aMRBeEeqGYoBEYurJJg">
-        <annotations xmi:id="_c5J58hG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_q4SHQBG6Eeqxptn-OOol6g" source="_HA1e8BBeEeqGYoBEYurJJg" target="_pOeQ0BG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_q4uMIBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_xlRjsRG6Eeqxptn-OOol6g" source="_HA1e8BBeEeqGYoBEYurJJg" target="_wMfy4BG6Eeqxptn-OOol6g">
-        <annotations xmi:id="_xlTY4BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-    </rhs>
-    <mappings xmi:id="_HA1e8RBeEeqGYoBEYurJJg" origin="_HA034BBeEeqGYoBEYurJJg" image="_HA1e8BBeEeqGYoBEYurJJg"/>
-    <mappings xmi:id="_H0ABQBBeEeqGYoBEYurJJg" origin="_Hz_aMBBeEeqGYoBEYurJJg" image="_Hz_aMRBeEeqGYoBEYurJJg"/>
-    <mappings xmi:id="_pOe34BG6Eeqxptn-OOol6g" origin="_pOdpwBG6Eeqxptn-OOol6g" image="_pOeQ0BG6Eeqxptn-OOol6g"/>
-    <mappings xmi:id="_wMfy4RG6Eeqxptn-OOol6g" origin="_wMfL0BG6Eeqxptn-OOol6g" image="_wMfy4BG6Eeqxptn-OOol6g"/>
-  </units>
-  <units xsi:type="henshin:Rule" xmi:id="_0rWAkCTxEeqQuPO741JcQw" name="create1">
-    <annotations xmi:id="_0rWAkSTxEeqQuPO741JcQw" key="featureModel" value="(M and not F) or (not M and F)"/>
-    <annotations xmi:id="_0rWAkiTxEeqQuPO741JcQw" key="injectiveMatchingPresenceCondition" value=""/>
-    <annotations xmi:id="_0rWAkyTxEeqQuPO741JcQw" key="features" value="M, F"/>
-    <lhs xmi:id="_0rWAlCTxEeqQuPO741JcQw" name="Lhs">
-      <nodes xmi:id="_0rWAlSTxEeqQuPO741JcQw" outgoing="_0rWAnSTxEeqQuPO741JcQw _0rWAnyTxEeqQuPO741JcQw _0rWAoSTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWAliTxEeqQuPO741JcQw" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_0rWAlyTxEeqQuPO741JcQw" incoming="_0rWAnSTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWAmCTxEeqQuPO741JcQw" key="presenceCondition" value="M"/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_0rWAmSTxEeqQuPO741JcQw" incoming="_0rWAnyTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWAmiTxEeqQuPO741JcQw" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <nodes xmi:id="_0rWAmyTxEeqQuPO741JcQw" incoming="_0rWAoSTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWAnCTxEeqQuPO741JcQw" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <edges xmi:id="_0rWAnSTxEeqQuPO741JcQw" source="_0rWAlSTxEeqQuPO741JcQw" target="_0rWAlyTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWAniTxEeqQuPO741JcQw" key="presenceCondition" value="M"/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_0rWAnyTxEeqQuPO741JcQw" source="_0rWAlSTxEeqQuPO741JcQw" target="_0rWAmSTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWAoCTxEeqQuPO741JcQw" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_0rWAoSTxEeqQuPO741JcQw" source="_0rWAlSTxEeqQuPO741JcQw" target="_0rWAmyTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWAoiTxEeqQuPO741JcQw" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-    </lhs>
-    <rhs xmi:id="_0rWAoyTxEeqQuPO741JcQw" name="Rhs">
-      <nodes xmi:id="_0rWApCTxEeqQuPO741JcQw" outgoing="_0rWArCTxEeqQuPO741JcQw _0rWAriTxEeqQuPO741JcQw _0rWAsCTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWApSTxEeqQuPO741JcQw" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_0rWApiTxEeqQuPO741JcQw" incoming="_0rWArCTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWApyTxEeqQuPO741JcQw" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_0rWAqCTxEeqQuPO741JcQw" incoming="_0rWAriTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWAqSTxEeqQuPO741JcQw" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <nodes xmi:id="_0rWAqiTxEeqQuPO741JcQw" incoming="_0rWAsCTxEeqQuPO741JcQw" outgoing="_akKm4CTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_0rWAqyTxEeqQuPO741JcQw" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_7tIoUCTxEeqQuPO741JcQw" incoming="_akKm4CTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_7tMSsCTxEeqQuPO741JcQw" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Annotation"/>
-      </nodes>
-      <edges xmi:id="_0rWArCTxEeqQuPO741JcQw" source="_0rWApCTxEeqQuPO741JcQw" target="_0rWApiTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWArSTxEeqQuPO741JcQw" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_0rWAriTxEeqQuPO741JcQw" source="_0rWApCTxEeqQuPO741JcQw" target="_0rWAqCTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWAryTxEeqQuPO741JcQw" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_0rWAsCTxEeqQuPO741JcQw" source="_0rWApCTxEeqQuPO741JcQw" target="_0rWAqiTxEeqQuPO741JcQw">
-        <annotations xmi:id="_0rWAsSTxEeqQuPO741JcQw" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_akKm4CTyEeqmvcN2WI4rvQ" source="_0rWAqiTxEeqQuPO741JcQw" target="_7tIoUCTxEeqQuPO741JcQw">
-        <annotations xmi:id="_akPfYCTyEeqmvcN2WI4rvQ" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Method/annotation"/>
-      </edges>
-    </rhs>
-    <mappings xmi:id="_0rWAsiTxEeqQuPO741JcQw" origin="_0rWAlSTxEeqQuPO741JcQw" image="_0rWApCTxEeqQuPO741JcQw"/>
-    <mappings xmi:id="_0rWAsyTxEeqQuPO741JcQw" origin="_0rWAlyTxEeqQuPO741JcQw" image="_0rWApiTxEeqQuPO741JcQw"/>
-    <mappings xmi:id="_0rWAtCTxEeqQuPO741JcQw" origin="_0rWAmSTxEeqQuPO741JcQw" image="_0rWAqCTxEeqQuPO741JcQw"/>
-    <mappings xmi:id="_0rWAtSTxEeqQuPO741JcQw" origin="_0rWAmyTxEeqQuPO741JcQw" image="_0rWAqiTxEeqQuPO741JcQw"/>
-  </units>
-  <units xsi:type="henshin:Rule" xmi:id="_52y8UCTyEeqmvcN2WI4rvQ" name="create2">
-    <annotations xmi:id="_52y8USTyEeqmvcN2WI4rvQ" key="featureModel" value="(M and not F) or (not M and F)"/>
-    <annotations xmi:id="_52y8UiTyEeqmvcN2WI4rvQ" key="injectiveMatchingPresenceCondition" value=""/>
-    <annotations xmi:id="_52y8UyTyEeqmvcN2WI4rvQ" key="features" value="M, F"/>
-    <lhs xmi:id="_52y8VCTyEeqmvcN2WI4rvQ" name="Lhs">
-      <nodes xmi:id="_52y8VSTyEeqmvcN2WI4rvQ" outgoing="_52y8XSTyEeqmvcN2WI4rvQ _52y8XyTyEeqmvcN2WI4rvQ _52y8YSTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8ViTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_52y8VyTyEeqmvcN2WI4rvQ" incoming="_52y8XSTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8WCTyEeqmvcN2WI4rvQ" key="presenceCondition" value="M"/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_52y8WSTyEeqmvcN2WI4rvQ" incoming="_52y8XyTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8WiTyEeqmvcN2WI4rvQ" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <nodes xmi:id="_52y8WyTyEeqmvcN2WI4rvQ" incoming="_52y8YSTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8XCTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <edges xmi:id="_52y8XSTyEeqmvcN2WI4rvQ" source="_52y8VSTyEeqmvcN2WI4rvQ" target="_52y8VyTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8XiTyEeqmvcN2WI4rvQ" key="presenceCondition" value="M"/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_52y8XyTyEeqmvcN2WI4rvQ" source="_52y8VSTyEeqmvcN2WI4rvQ" target="_52y8WSTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8YCTyEeqmvcN2WI4rvQ" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_52y8YSTyEeqmvcN2WI4rvQ" source="_52y8VSTyEeqmvcN2WI4rvQ" target="_52y8WyTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8YiTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-    </lhs>
-    <rhs xmi:id="_52y8YyTyEeqmvcN2WI4rvQ" name="Rhs">
-      <nodes xmi:id="_52y8ZCTyEeqmvcN2WI4rvQ" outgoing="_52y8biTyEeqmvcN2WI4rvQ _52y8cCTyEeqmvcN2WI4rvQ _52y8ciTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8ZSTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_52y8ZiTyEeqmvcN2WI4rvQ" incoming="_52y8biTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8ZyTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_52y8aCTyEeqmvcN2WI4rvQ" incoming="_52y8cCTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8aSTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <nodes xmi:id="_52y8aiTyEeqmvcN2WI4rvQ" incoming="_52y8ciTyEeqmvcN2WI4rvQ" outgoing="_52y8dCTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8ayTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_52y8bCTyEeqmvcN2WI4rvQ" incoming="_52y8dCTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8bSTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Annotation"/>
-      </nodes>
-      <edges xmi:id="_52y8biTyEeqmvcN2WI4rvQ" source="_52y8ZCTyEeqmvcN2WI4rvQ" target="_52y8ZiTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8byTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_52y8cCTyEeqmvcN2WI4rvQ" source="_52y8ZCTyEeqmvcN2WI4rvQ" target="_52y8aCTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8cSTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_52y8ciTyEeqmvcN2WI4rvQ" source="_52y8ZCTyEeqmvcN2WI4rvQ" target="_52y8aiTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8cyTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_52y8dCTyEeqmvcN2WI4rvQ" source="_52y8aiTyEeqmvcN2WI4rvQ" target="_52y8bCTyEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_52y8dSTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method/annotation"/>
-      </edges>
-    </rhs>
-    <mappings xmi:id="_52y8diTyEeqmvcN2WI4rvQ" origin="_52y8VSTyEeqmvcN2WI4rvQ" image="_52y8ZCTyEeqmvcN2WI4rvQ"/>
-    <mappings xmi:id="_52y8dyTyEeqmvcN2WI4rvQ" origin="_52y8VyTyEeqmvcN2WI4rvQ" image="_52y8ZiTyEeqmvcN2WI4rvQ"/>
-    <mappings xmi:id="_52y8eCTyEeqmvcN2WI4rvQ" origin="_52y8WSTyEeqmvcN2WI4rvQ" image="_52y8aCTyEeqmvcN2WI4rvQ"/>
-    <mappings xmi:id="_52y8eSTyEeqmvcN2WI4rvQ" origin="_52y8WyTyEeqmvcN2WI4rvQ" image="_52y8aiTyEeqmvcN2WI4rvQ"/>
-  </units>
-  <units xsi:type="henshin:Rule" xmi:id="_SrasgCTzEeqmvcN2WI4rvQ" name="delete1">
-    <annotations xmi:id="_SrasgSTzEeqmvcN2WI4rvQ" key="featureModel" value="(M and not F) or (not M and F)"/>
-    <annotations xmi:id="_SrasgiTzEeqmvcN2WI4rvQ" key="injectiveMatchingPresenceCondition" value=""/>
-    <annotations xmi:id="_SrasgyTzEeqmvcN2WI4rvQ" key="features" value="M, F"/>
-    <lhs xmi:id="_SrashCTzEeqmvcN2WI4rvQ" name="Lhs">
-      <nodes xmi:id="_SrashSTzEeqmvcN2WI4rvQ" outgoing="_SrasjSTzEeqmvcN2WI4rvQ _SrasjyTzEeqmvcN2WI4rvQ _SraskSTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SrashiTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_SrashyTzEeqmvcN2WI4rvQ" incoming="_SrasjSTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SrasiCTzEeqmvcN2WI4rvQ" key="presenceCondition" value="M"/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_SrasiSTzEeqmvcN2WI4rvQ" incoming="_SrasjyTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SrasiiTzEeqmvcN2WI4rvQ" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <nodes xmi:id="_SrasiyTzEeqmvcN2WI4rvQ" incoming="_SraskSTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SrasjCTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <edges xmi:id="_SrasjSTzEeqmvcN2WI4rvQ" source="_SrashSTzEeqmvcN2WI4rvQ" target="_SrashyTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SrasjiTzEeqmvcN2WI4rvQ" key="presenceCondition" value="M"/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_SrasjyTzEeqmvcN2WI4rvQ" source="_SrashSTzEeqmvcN2WI4rvQ" target="_SrasiSTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SraskCTzEeqmvcN2WI4rvQ" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_SraskSTzEeqmvcN2WI4rvQ" source="_SrashSTzEeqmvcN2WI4rvQ" target="_SrasiyTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SraskiTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-    </lhs>
-    <rhs xmi:id="_SraskyTzEeqmvcN2WI4rvQ" name="Rhs">
-      <nodes xmi:id="_SraslCTzEeqmvcN2WI4rvQ" outgoing="_SrasnCTzEeqmvcN2WI4rvQ _SrasoCTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SraslSTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_SrasliTzEeqmvcN2WI4rvQ" incoming="_SrasnCTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SraslyTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_SrasmiTzEeqmvcN2WI4rvQ" incoming="_SrasoCTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SrasmyTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <edges xmi:id="_SrasnCTzEeqmvcN2WI4rvQ" source="_SraslCTzEeqmvcN2WI4rvQ" target="_SrasliTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SrasnSTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_SrasoCTzEeqmvcN2WI4rvQ" source="_SraslCTzEeqmvcN2WI4rvQ" target="_SrasmiTzEeqmvcN2WI4rvQ">
-        <annotations xmi:id="_SrasoSTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-    </rhs>
-    <mappings xmi:id="_SrasoiTzEeqmvcN2WI4rvQ" origin="_SrashSTzEeqmvcN2WI4rvQ" image="_SraslCTzEeqmvcN2WI4rvQ"/>
-    <mappings xmi:id="_SrasoyTzEeqmvcN2WI4rvQ" origin="_SrashyTzEeqmvcN2WI4rvQ" image="_SrasliTzEeqmvcN2WI4rvQ"/>
-    <mappings xmi:id="_SraspSTzEeqmvcN2WI4rvQ" origin="_SrasiyTzEeqmvcN2WI4rvQ" image="_SrasmiTzEeqmvcN2WI4rvQ"/>
-  </units>
-  <units xsi:type="henshin:Rule" xmi:id="_Z6vIACT1EeqBU_anwUtFuQ" name="delete2">
-    <annotations xmi:id="_Z6vIAST1EeqBU_anwUtFuQ" key="featureModel" value="(M and not F) or (not M and F)"/>
-    <annotations xmi:id="_Z6vIAiT1EeqBU_anwUtFuQ" key="injectiveMatchingPresenceCondition" value=""/>
-    <annotations xmi:id="_Z6vIAyT1EeqBU_anwUtFuQ" key="features" value="M, F"/>
-    <lhs xmi:id="_Z6vIBCT1EeqBU_anwUtFuQ" name="Lhs">
-      <nodes xmi:id="_Z6vIBST1EeqBU_anwUtFuQ" outgoing="_Z6vIDST1EeqBU_anwUtFuQ _Z6vIDyT1EeqBU_anwUtFuQ _Z6vIEST1EeqBU_anwUtFuQ">
-        <annotations xmi:id="_Z6vIBiT1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_Z6vIByT1EeqBU_anwUtFuQ" incoming="_Z6vIDST1EeqBU_anwUtFuQ">
-        <annotations xmi:id="_Z6vICCT1EeqBU_anwUtFuQ" key="presenceCondition" value="M"/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_Z6vICST1EeqBU_anwUtFuQ" incoming="_Z6vIDyT1EeqBU_anwUtFuQ">
-        <annotations xmi:id="_Z6vICiT1EeqBU_anwUtFuQ" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <nodes xmi:id="_Z6vICyT1EeqBU_anwUtFuQ" incoming="_Z6vIEST1EeqBU_anwUtFuQ">
-        <annotations xmi:id="_Z6vIDCT1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <edges xmi:id="_Z6vIDST1EeqBU_anwUtFuQ" source="_Z6vIBST1EeqBU_anwUtFuQ" target="_Z6vIByT1EeqBU_anwUtFuQ">
-        <annotations xmi:id="_Z6vIDiT1EeqBU_anwUtFuQ" key="presenceCondition" value="M"/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_Z6vIDyT1EeqBU_anwUtFuQ" source="_Z6vIBST1EeqBU_anwUtFuQ" target="_Z6vICST1EeqBU_anwUtFuQ">
-        <annotations xmi:id="_Z6vIECT1EeqBU_anwUtFuQ" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-      <edges xmi:id="_Z6vIEST1EeqBU_anwUtFuQ" source="_Z6vIBST1EeqBU_anwUtFuQ" target="_Z6vICyT1EeqBU_anwUtFuQ">
-        <annotations xmi:id="_Z6vIEiT1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-    </lhs>
-    <rhs xmi:id="_Z6vIEyT1EeqBU_anwUtFuQ" name="Rhs">
-      <nodes xmi:id="_Z6vIFCT1EeqBU_anwUtFuQ" outgoing="_Z6vIGiT1EeqBU_anwUtFuQ _ggCBAyT1EeqBU_anwUtFuQ">
-        <annotations xmi:id="_Z6vIFST1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class"/>
-      </nodes>
-      <nodes xmi:id="_Z6vIFiT1EeqBU_anwUtFuQ" incoming="_Z6vIGiT1EeqBU_anwUtFuQ">
-        <annotations xmi:id="_Z6vIFyT1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Method"/>
-      </nodes>
-      <nodes xmi:id="_ggCBACT1EeqBU_anwUtFuQ" incoming="_ggCBAyT1EeqBU_anwUtFuQ">
-        <annotations xmi:id="_ggCBAST1EeqBU_anwUtFuQ" key="presenceCondition" value="F"/>
-        <type href="Java.ecore#//Field"/>
-      </nodes>
-      <edges xmi:id="_Z6vIGiT1EeqBU_anwUtFuQ" source="_Z6vIFCT1EeqBU_anwUtFuQ" target="_Z6vIFiT1EeqBU_anwUtFuQ">
-        <annotations xmi:id="_Z6vIGyT1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>
-        <type href="Java.ecore#//Class/methods"/>
-      </edges>
-      <edges xmi:id="_ggCBAyT1EeqBU_anwUtFuQ" source="_Z6vIFCT1EeqBU_anwUtFuQ" target="_ggCBACT1EeqBU_anwUtFuQ">
-        <type href="Java.ecore#//Class/fields"/>
-      </edges>
-    </rhs>
-    <mappings xmi:id="_Z6vIHiT1EeqBU_anwUtFuQ" origin="_Z6vIBST1EeqBU_anwUtFuQ" image="_Z6vIFCT1EeqBU_anwUtFuQ"/>
-    <mappings xmi:id="_Z6vIHyT1EeqBU_anwUtFuQ" origin="_Z6vIByT1EeqBU_anwUtFuQ" image="_Z6vIFiT1EeqBU_anwUtFuQ"/>
-    <mappings xmi:id="_ggCBAiT1EeqBU_anwUtFuQ" origin="_Z6vICST1EeqBU_anwUtFuQ" image="_ggCBACT1EeqBU_anwUtFuQ"/>
-  </units>
-</henshin:Module>
+<?xml version="1.0" encoding="UTF-8"?>

+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_EMSTsBBeEeqGYoBEYurJJg">

+  <imports href="Java.ecore#/"/>

+  <units xsi:type="henshin:Rule" xmi:id="_FRXFYBBeEeqGYoBEYurJJg" name="preserve">

+    <annotations xmi:id="_FR3bsBBeEeqGYoBEYurJJg" key="featureConstraint" value="(M and not F) or (not M and F)"/>

+    <annotations xmi:id="_FR3bsRBeEeqGYoBEYurJJg" key="injectiveMatchingPresenceCondition" value=""/>

+    <annotations xmi:id="_FR4CwBBeEeqGYoBEYurJJg" key="features" value="M, F"/>

+    <lhs xmi:id="_FRfoQBBeEeqGYoBEYurJJg" name="Lhs">

+      <nodes xmi:id="_HA034BBeEeqGYoBEYurJJg" outgoing="_IognYBBeEeqGYoBEYurJJg _q4RgMBG6Eeqxptn-OOol6g _xlRjsBG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_c5FogBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_Hz_aMBBeEeqGYoBEYurJJg" incoming="_IognYBBeEeqGYoBEYurJJg">

+        <annotations xmi:id="_c5Ir0BG6Eeqxptn-OOol6g" key="presenceCondition" value="M"/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_pOdpwBG6Eeqxptn-OOol6g" incoming="_q4RgMBG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_pOmzsBG6Eeqxptn-OOol6g" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <nodes xmi:id="_wMfL0BG6Eeqxptn-OOol6g" incoming="_xlRjsBG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_wMgZ8BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <edges xmi:id="_IognYBBeEeqGYoBEYurJJg" source="_HA034BBeEeqGYoBEYurJJg" target="_Hz_aMBBeEeqGYoBEYurJJg">

+        <annotations xmi:id="_c5JS4BG6Eeqxptn-OOol6g" key="presenceCondition" value="M"/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_q4RgMBG6Eeqxptn-OOol6g" source="_HA034BBeEeqGYoBEYurJJg" target="_pOdpwBG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_q4sW8BG6Eeqxptn-OOol6g" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_xlRjsBG6Eeqxptn-OOol6g" source="_HA034BBeEeqGYoBEYurJJg" target="_wMfL0BG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_xlSKwBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_FRfoQRBeEeqGYoBEYurJJg" name="Rhs">

+      <nodes xmi:id="_HA1e8BBeEeqGYoBEYurJJg" outgoing="_IognYRBeEeqGYoBEYurJJg _q4SHQBG6Eeqxptn-OOol6g _xlRjsRG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_c5J58BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_Hz_aMRBeEeqGYoBEYurJJg" incoming="_IognYRBeEeqGYoBEYurJJg">

+        <annotations xmi:id="_c5J58RG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_pOeQ0BG6Eeqxptn-OOol6g" incoming="_q4SHQBG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_pOqeEBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <nodes xmi:id="_wMfy4BG6Eeqxptn-OOol6g" incoming="_xlRjsRG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_wMi2MBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <edges xmi:id="_IognYRBeEeqGYoBEYurJJg" source="_HA1e8BBeEeqGYoBEYurJJg" target="_Hz_aMRBeEeqGYoBEYurJJg">

+        <annotations xmi:id="_c5J58hG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_q4SHQBG6Eeqxptn-OOol6g" source="_HA1e8BBeEeqGYoBEYurJJg" target="_pOeQ0BG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_q4uMIBG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_xlRjsRG6Eeqxptn-OOol6g" source="_HA1e8BBeEeqGYoBEYurJJg" target="_wMfy4BG6Eeqxptn-OOol6g">

+        <annotations xmi:id="_xlTY4BG6Eeqxptn-OOol6g" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_HA1e8RBeEeqGYoBEYurJJg" origin="_HA034BBeEeqGYoBEYurJJg" image="_HA1e8BBeEeqGYoBEYurJJg"/>

+    <mappings xmi:id="_H0ABQBBeEeqGYoBEYurJJg" origin="_Hz_aMBBeEeqGYoBEYurJJg" image="_Hz_aMRBeEeqGYoBEYurJJg"/>

+    <mappings xmi:id="_pOe34BG6Eeqxptn-OOol6g" origin="_pOdpwBG6Eeqxptn-OOol6g" image="_pOeQ0BG6Eeqxptn-OOol6g"/>

+    <mappings xmi:id="_wMfy4RG6Eeqxptn-OOol6g" origin="_wMfL0BG6Eeqxptn-OOol6g" image="_wMfy4BG6Eeqxptn-OOol6g"/>

+  </units>

+  <units xsi:type="henshin:Rule" xmi:id="_0rWAkCTxEeqQuPO741JcQw" name="create1">

+    <annotations xmi:id="_0rWAkSTxEeqQuPO741JcQw" key="featureConstraint" value="(M and not F) or (not M and F)"/>

+    <annotations xmi:id="_0rWAkiTxEeqQuPO741JcQw" key="injectiveMatchingPresenceCondition" value=""/>

+    <annotations xmi:id="_0rWAkyTxEeqQuPO741JcQw" key="features" value="M, F"/>

+    <lhs xmi:id="_0rWAlCTxEeqQuPO741JcQw" name="Lhs">

+      <nodes xmi:id="_0rWAlSTxEeqQuPO741JcQw" outgoing="_0rWAnSTxEeqQuPO741JcQw _0rWAnyTxEeqQuPO741JcQw _0rWAoSTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWAliTxEeqQuPO741JcQw" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_0rWAlyTxEeqQuPO741JcQw" incoming="_0rWAnSTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWAmCTxEeqQuPO741JcQw" key="presenceCondition" value="M"/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_0rWAmSTxEeqQuPO741JcQw" incoming="_0rWAnyTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWAmiTxEeqQuPO741JcQw" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <nodes xmi:id="_0rWAmyTxEeqQuPO741JcQw" incoming="_0rWAoSTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWAnCTxEeqQuPO741JcQw" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <edges xmi:id="_0rWAnSTxEeqQuPO741JcQw" source="_0rWAlSTxEeqQuPO741JcQw" target="_0rWAlyTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWAniTxEeqQuPO741JcQw" key="presenceCondition" value="M"/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_0rWAnyTxEeqQuPO741JcQw" source="_0rWAlSTxEeqQuPO741JcQw" target="_0rWAmSTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWAoCTxEeqQuPO741JcQw" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_0rWAoSTxEeqQuPO741JcQw" source="_0rWAlSTxEeqQuPO741JcQw" target="_0rWAmyTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWAoiTxEeqQuPO741JcQw" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_0rWAoyTxEeqQuPO741JcQw" name="Rhs">

+      <nodes xmi:id="_0rWApCTxEeqQuPO741JcQw" outgoing="_0rWArCTxEeqQuPO741JcQw _0rWAriTxEeqQuPO741JcQw _0rWAsCTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWApSTxEeqQuPO741JcQw" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_0rWApiTxEeqQuPO741JcQw" incoming="_0rWArCTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWApyTxEeqQuPO741JcQw" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_0rWAqCTxEeqQuPO741JcQw" incoming="_0rWAriTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWAqSTxEeqQuPO741JcQw" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <nodes xmi:id="_0rWAqiTxEeqQuPO741JcQw" incoming="_0rWAsCTxEeqQuPO741JcQw" outgoing="_akKm4CTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_0rWAqyTxEeqQuPO741JcQw" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_7tIoUCTxEeqQuPO741JcQw" incoming="_akKm4CTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_7tMSsCTxEeqQuPO741JcQw" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Annotation"/>

+      </nodes>

+      <edges xmi:id="_0rWArCTxEeqQuPO741JcQw" source="_0rWApCTxEeqQuPO741JcQw" target="_0rWApiTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWArSTxEeqQuPO741JcQw" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_0rWAriTxEeqQuPO741JcQw" source="_0rWApCTxEeqQuPO741JcQw" target="_0rWAqCTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWAryTxEeqQuPO741JcQw" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_0rWAsCTxEeqQuPO741JcQw" source="_0rWApCTxEeqQuPO741JcQw" target="_0rWAqiTxEeqQuPO741JcQw">

+        <annotations xmi:id="_0rWAsSTxEeqQuPO741JcQw" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_akKm4CTyEeqmvcN2WI4rvQ" source="_0rWAqiTxEeqQuPO741JcQw" target="_7tIoUCTxEeqQuPO741JcQw">

+        <annotations xmi:id="_akPfYCTyEeqmvcN2WI4rvQ" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Method/annotation"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_0rWAsiTxEeqQuPO741JcQw" origin="_0rWAlSTxEeqQuPO741JcQw" image="_0rWApCTxEeqQuPO741JcQw"/>

+    <mappings xmi:id="_0rWAsyTxEeqQuPO741JcQw" origin="_0rWAlyTxEeqQuPO741JcQw" image="_0rWApiTxEeqQuPO741JcQw"/>

+    <mappings xmi:id="_0rWAtCTxEeqQuPO741JcQw" origin="_0rWAmSTxEeqQuPO741JcQw" image="_0rWAqCTxEeqQuPO741JcQw"/>

+    <mappings xmi:id="_0rWAtSTxEeqQuPO741JcQw" origin="_0rWAmyTxEeqQuPO741JcQw" image="_0rWAqiTxEeqQuPO741JcQw"/>

+  </units>

+  <units xsi:type="henshin:Rule" xmi:id="_52y8UCTyEeqmvcN2WI4rvQ" name="create2">

+    <annotations xmi:id="_52y8USTyEeqmvcN2WI4rvQ" key="featureConstraint" value="(M and not F) or (not M and F)"/>

+    <annotations xmi:id="_52y8UiTyEeqmvcN2WI4rvQ" key="injectiveMatchingPresenceCondition" value=""/>

+    <annotations xmi:id="_52y8UyTyEeqmvcN2WI4rvQ" key="features" value="M, F"/>

+    <lhs xmi:id="_52y8VCTyEeqmvcN2WI4rvQ" name="Lhs">

+      <nodes xmi:id="_52y8VSTyEeqmvcN2WI4rvQ" outgoing="_52y8XSTyEeqmvcN2WI4rvQ _52y8XyTyEeqmvcN2WI4rvQ _52y8YSTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8ViTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_52y8VyTyEeqmvcN2WI4rvQ" incoming="_52y8XSTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8WCTyEeqmvcN2WI4rvQ" key="presenceCondition" value="M"/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_52y8WSTyEeqmvcN2WI4rvQ" incoming="_52y8XyTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8WiTyEeqmvcN2WI4rvQ" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <nodes xmi:id="_52y8WyTyEeqmvcN2WI4rvQ" incoming="_52y8YSTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8XCTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <edges xmi:id="_52y8XSTyEeqmvcN2WI4rvQ" source="_52y8VSTyEeqmvcN2WI4rvQ" target="_52y8VyTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8XiTyEeqmvcN2WI4rvQ" key="presenceCondition" value="M"/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_52y8XyTyEeqmvcN2WI4rvQ" source="_52y8VSTyEeqmvcN2WI4rvQ" target="_52y8WSTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8YCTyEeqmvcN2WI4rvQ" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_52y8YSTyEeqmvcN2WI4rvQ" source="_52y8VSTyEeqmvcN2WI4rvQ" target="_52y8WyTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8YiTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_52y8YyTyEeqmvcN2WI4rvQ" name="Rhs">

+      <nodes xmi:id="_52y8ZCTyEeqmvcN2WI4rvQ" outgoing="_52y8biTyEeqmvcN2WI4rvQ _52y8cCTyEeqmvcN2WI4rvQ _52y8ciTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8ZSTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_52y8ZiTyEeqmvcN2WI4rvQ" incoming="_52y8biTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8ZyTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_52y8aCTyEeqmvcN2WI4rvQ" incoming="_52y8cCTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8aSTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <nodes xmi:id="_52y8aiTyEeqmvcN2WI4rvQ" incoming="_52y8ciTyEeqmvcN2WI4rvQ" outgoing="_52y8dCTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8ayTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_52y8bCTyEeqmvcN2WI4rvQ" incoming="_52y8dCTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8bSTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Annotation"/>

+      </nodes>

+      <edges xmi:id="_52y8biTyEeqmvcN2WI4rvQ" source="_52y8ZCTyEeqmvcN2WI4rvQ" target="_52y8ZiTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8byTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_52y8cCTyEeqmvcN2WI4rvQ" source="_52y8ZCTyEeqmvcN2WI4rvQ" target="_52y8aCTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8cSTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_52y8ciTyEeqmvcN2WI4rvQ" source="_52y8ZCTyEeqmvcN2WI4rvQ" target="_52y8aiTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8cyTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_52y8dCTyEeqmvcN2WI4rvQ" source="_52y8aiTyEeqmvcN2WI4rvQ" target="_52y8bCTyEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_52y8dSTyEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method/annotation"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_52y8diTyEeqmvcN2WI4rvQ" origin="_52y8VSTyEeqmvcN2WI4rvQ" image="_52y8ZCTyEeqmvcN2WI4rvQ"/>

+    <mappings xmi:id="_52y8dyTyEeqmvcN2WI4rvQ" origin="_52y8VyTyEeqmvcN2WI4rvQ" image="_52y8ZiTyEeqmvcN2WI4rvQ"/>

+    <mappings xmi:id="_52y8eCTyEeqmvcN2WI4rvQ" origin="_52y8WSTyEeqmvcN2WI4rvQ" image="_52y8aCTyEeqmvcN2WI4rvQ"/>

+    <mappings xmi:id="_52y8eSTyEeqmvcN2WI4rvQ" origin="_52y8WyTyEeqmvcN2WI4rvQ" image="_52y8aiTyEeqmvcN2WI4rvQ"/>

+  </units>

+  <units xsi:type="henshin:Rule" xmi:id="_SrasgCTzEeqmvcN2WI4rvQ" name="delete1">

+    <annotations xmi:id="_SrasgSTzEeqmvcN2WI4rvQ" key="featureConstraint" value="(M and not F) or (not M and F)"/>

+    <annotations xmi:id="_SrasgiTzEeqmvcN2WI4rvQ" key="injectiveMatchingPresenceCondition" value=""/>

+    <annotations xmi:id="_SrasgyTzEeqmvcN2WI4rvQ" key="features" value="M, F"/>

+    <lhs xmi:id="_SrashCTzEeqmvcN2WI4rvQ" name="Lhs">

+      <nodes xmi:id="_SrashSTzEeqmvcN2WI4rvQ" outgoing="_SrasjSTzEeqmvcN2WI4rvQ _SrasjyTzEeqmvcN2WI4rvQ _SraskSTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SrashiTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_SrashyTzEeqmvcN2WI4rvQ" incoming="_SrasjSTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SrasiCTzEeqmvcN2WI4rvQ" key="presenceCondition" value="M"/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_SrasiSTzEeqmvcN2WI4rvQ" incoming="_SrasjyTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SrasiiTzEeqmvcN2WI4rvQ" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <nodes xmi:id="_SrasiyTzEeqmvcN2WI4rvQ" incoming="_SraskSTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SrasjCTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <edges xmi:id="_SrasjSTzEeqmvcN2WI4rvQ" source="_SrashSTzEeqmvcN2WI4rvQ" target="_SrashyTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SrasjiTzEeqmvcN2WI4rvQ" key="presenceCondition" value="M"/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_SrasjyTzEeqmvcN2WI4rvQ" source="_SrashSTzEeqmvcN2WI4rvQ" target="_SrasiSTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SraskCTzEeqmvcN2WI4rvQ" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_SraskSTzEeqmvcN2WI4rvQ" source="_SrashSTzEeqmvcN2WI4rvQ" target="_SrasiyTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SraskiTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_SraskyTzEeqmvcN2WI4rvQ" name="Rhs">

+      <nodes xmi:id="_SraslCTzEeqmvcN2WI4rvQ" outgoing="_SrasnCTzEeqmvcN2WI4rvQ _SrasoCTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SraslSTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_SrasliTzEeqmvcN2WI4rvQ" incoming="_SrasnCTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SraslyTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_SrasmiTzEeqmvcN2WI4rvQ" incoming="_SrasoCTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SrasmyTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <edges xmi:id="_SrasnCTzEeqmvcN2WI4rvQ" source="_SraslCTzEeqmvcN2WI4rvQ" target="_SrasliTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SrasnSTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_SrasoCTzEeqmvcN2WI4rvQ" source="_SraslCTzEeqmvcN2WI4rvQ" target="_SrasmiTzEeqmvcN2WI4rvQ">

+        <annotations xmi:id="_SrasoSTzEeqmvcN2WI4rvQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_SrasoiTzEeqmvcN2WI4rvQ" origin="_SrashSTzEeqmvcN2WI4rvQ" image="_SraslCTzEeqmvcN2WI4rvQ"/>

+    <mappings xmi:id="_SrasoyTzEeqmvcN2WI4rvQ" origin="_SrashyTzEeqmvcN2WI4rvQ" image="_SrasliTzEeqmvcN2WI4rvQ"/>

+    <mappings xmi:id="_SraspSTzEeqmvcN2WI4rvQ" origin="_SrasiyTzEeqmvcN2WI4rvQ" image="_SrasmiTzEeqmvcN2WI4rvQ"/>

+  </units>

+  <units xsi:type="henshin:Rule" xmi:id="_Z6vIACT1EeqBU_anwUtFuQ" name="delete2">

+    <annotations xmi:id="_Z6vIAST1EeqBU_anwUtFuQ" key="featureConstraint" value="(M and not F) or (not M and F)"/>

+    <annotations xmi:id="_Z6vIAiT1EeqBU_anwUtFuQ" key="injectiveMatchingPresenceCondition" value=""/>

+    <annotations xmi:id="_Z6vIAyT1EeqBU_anwUtFuQ" key="features" value="M, F"/>

+    <lhs xmi:id="_Z6vIBCT1EeqBU_anwUtFuQ" name="Lhs">

+      <nodes xmi:id="_Z6vIBST1EeqBU_anwUtFuQ" outgoing="_Z6vIDST1EeqBU_anwUtFuQ _Z6vIDyT1EeqBU_anwUtFuQ _Z6vIEST1EeqBU_anwUtFuQ">

+        <annotations xmi:id="_Z6vIBiT1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_Z6vIByT1EeqBU_anwUtFuQ" incoming="_Z6vIDST1EeqBU_anwUtFuQ">

+        <annotations xmi:id="_Z6vICCT1EeqBU_anwUtFuQ" key="presenceCondition" value="M"/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_Z6vICST1EeqBU_anwUtFuQ" incoming="_Z6vIDyT1EeqBU_anwUtFuQ">

+        <annotations xmi:id="_Z6vICiT1EeqBU_anwUtFuQ" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <nodes xmi:id="_Z6vICyT1EeqBU_anwUtFuQ" incoming="_Z6vIEST1EeqBU_anwUtFuQ">

+        <annotations xmi:id="_Z6vIDCT1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <edges xmi:id="_Z6vIDST1EeqBU_anwUtFuQ" source="_Z6vIBST1EeqBU_anwUtFuQ" target="_Z6vIByT1EeqBU_anwUtFuQ">

+        <annotations xmi:id="_Z6vIDiT1EeqBU_anwUtFuQ" key="presenceCondition" value="M"/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_Z6vIDyT1EeqBU_anwUtFuQ" source="_Z6vIBST1EeqBU_anwUtFuQ" target="_Z6vICST1EeqBU_anwUtFuQ">

+        <annotations xmi:id="_Z6vIECT1EeqBU_anwUtFuQ" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+      <edges xmi:id="_Z6vIEST1EeqBU_anwUtFuQ" source="_Z6vIBST1EeqBU_anwUtFuQ" target="_Z6vICyT1EeqBU_anwUtFuQ">

+        <annotations xmi:id="_Z6vIEiT1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_Z6vIEyT1EeqBU_anwUtFuQ" name="Rhs">

+      <nodes xmi:id="_Z6vIFCT1EeqBU_anwUtFuQ" outgoing="_Z6vIGiT1EeqBU_anwUtFuQ _ggCBAyT1EeqBU_anwUtFuQ">

+        <annotations xmi:id="_Z6vIFST1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class"/>

+      </nodes>

+      <nodes xmi:id="_Z6vIFiT1EeqBU_anwUtFuQ" incoming="_Z6vIGiT1EeqBU_anwUtFuQ">

+        <annotations xmi:id="_Z6vIFyT1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Method"/>

+      </nodes>

+      <nodes xmi:id="_ggCBACT1EeqBU_anwUtFuQ" incoming="_ggCBAyT1EeqBU_anwUtFuQ">

+        <annotations xmi:id="_ggCBAST1EeqBU_anwUtFuQ" key="presenceCondition" value="F"/>

+        <type href="Java.ecore#//Field"/>

+      </nodes>

+      <edges xmi:id="_Z6vIGiT1EeqBU_anwUtFuQ" source="_Z6vIFCT1EeqBU_anwUtFuQ" target="_Z6vIFiT1EeqBU_anwUtFuQ">

+        <annotations xmi:id="_Z6vIGyT1EeqBU_anwUtFuQ" key="presenceCondition" value=""/>

+        <type href="Java.ecore#//Class/methods"/>

+      </edges>

+      <edges xmi:id="_ggCBAyT1EeqBU_anwUtFuQ" source="_Z6vIFCT1EeqBU_anwUtFuQ" target="_ggCBACT1EeqBU_anwUtFuQ">

+        <type href="Java.ecore#//Class/fields"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_Z6vIHiT1EeqBU_anwUtFuQ" origin="_Z6vIBST1EeqBU_anwUtFuQ" image="_Z6vIFCT1EeqBU_anwUtFuQ"/>

+    <mappings xmi:id="_Z6vIHyT1EeqBU_anwUtFuQ" origin="_Z6vIByT1EeqBU_anwUtFuQ" image="_Z6vIFiT1EeqBU_anwUtFuQ"/>

+    <mappings xmi:id="_ggCBAiT1EeqBU_anwUtFuQ" origin="_Z6vICST1EeqBU_anwUtFuQ" image="_ggCBACT1EeqBU_anwUtFuQ"/>

+  </units>

+</henshin:Module>

diff --git a/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/matcher/VariabilityAwareMatcher.java b/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/matcher/VariabilityAwareMatcher.java
index c6f5d15..a424baf 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/matcher/VariabilityAwareMatcher.java
+++ b/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/matcher/VariabilityAwareMatcher.java
@@ -175,9 +175,9 @@
 
 		Set<VariabilityAwareMatch> matches = new HashSet<VariabilityAwareMatch>();
 		if (!baseMatches.isEmpty()) {
-			mo.set(ruleInfo.getFeatureModel(), null, true);
+			mo.set(ruleInfo.getFeatureConstraint(), null, true);
 			findMatches(rule, mo, baseMatches, matches);
-			mo.set(ruleInfo.getFeatureModel(), true, null);
+			mo.set(ruleInfo.getFeatureConstraint(), true, null);
 		}
 
 		return matches;
@@ -298,12 +298,12 @@
 		Map<String, Sentence> usedExpressions;
 		Map<Sentence, Set<GraphElement>> pc2elem;
 		Map<Node, Set<Mapping>> node2Mapping;
-		Sentence featureModel;
+		Sentence featureConstraint;
 		Sentence injectiveMatching;
 
 		public RuleInfo(Rule rule) {
 			this.rule = VariabilityFactory.INSTANCE.createVariabilityRule(rule);
-			this.featureModel = FeatureExpression.getExpr(this.rule.getFeatureModel());
+			this.featureConstraint = FeatureExpression.getExpr(this.rule.getFeatureConstraint());
 			String injective = this.rule.getInjectiveMatchingPresenceCondition();
 			if (injective == null)
 				injective = rule.isInjectiveMatching() + "";
@@ -314,7 +314,7 @@
 		
 		public RuleInfo(VariabilityRule rule) {
 			this.rule = rule;
-			this.featureModel = FeatureExpression.getExpr(this.rule.getFeatureModel());
+			this.featureConstraint = FeatureExpression.getExpr(this.rule.getFeatureConstraint());
 			String injective = this.rule.getInjectiveMatchingPresenceCondition();
 			if (injective == null)
 				injective = rule.isInjectiveMatching() + "";
@@ -331,8 +331,8 @@
 			return usedExpressions;
 		}
 
-		public Sentence getFeatureModel() {
-			return featureModel;
+		public Sentence getFeatureConstraint() {
+			return featureConstraint;
 		}
 
 		public void populateMaps() {
@@ -373,9 +373,9 @@
 				}
 			}
 
-			if (featureModel != null && !featureModel.equals("") 
-					&& !pc2elem.containsKey(featureModel)) {
-				pc2elem.put(featureModel, new HashSet<GraphElement>());
+			if (featureConstraint != null && !featureConstraint.equals("") 
+					&& !pc2elem.containsKey(featureConstraint)) {
+				pc2elem.put(featureConstraint, new HashSet<GraphElement>());
 			}
 
 		}
@@ -407,7 +407,7 @@
 			for (Sentence expr : conditions) {
 				info.put(expr, null);
 			}
-			assumedTrue.add(ruleInfo.getFeatureModel());
+			assumedTrue.add(ruleInfo.getFeatureConstraint());
 			initiallyTrue.forEach(f -> assumedTrue.add(FeatureExpression.getExpr(f)));
 			initiallyFalse.forEach(f -> assumedFalse.add(FeatureExpression.getExpr(f)));
 			neutrals.addAll(conditions);
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/util/RuleUtil.java b/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/util/RuleUtil.java
index 41bdd0e..aa6debf 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/util/RuleUtil.java
+++ b/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/util/RuleUtil.java
@@ -55,7 +55,7 @@
 
 	public static boolean isVarRule(Unit unit) {
 		if (unit instanceof Rule) {
-			if (VariabilityFactory.INSTANCE.createVariabilityRule((Rule) unit).getFeatureModel() != null) {
+			if (VariabilityFactory.INSTANCE.createVariabilityRule((Rule) unit).getFeatureConstraint() != null) {
 				return true;
 			}
 		}
@@ -70,7 +70,7 @@
 		List<String> features = varRule.getFeatures();
 
 		Stream<PropositionSymbol> fm = SymbolCollector
-				.getSymbolsFrom(FeatureExpression.getExpr(varRule.getFeatureModel())).parallelStream();
+				.getSymbolsFrom(FeatureExpression.getExpr(varRule.getFeatureConstraint())).parallelStream();
 		Stream<PropositionSymbol> symbols = varRule.getAnnotations().parallelStream()
 				.filter(annot -> VariabilityConstants.PRESENCE_CONDITION.equals(annot.getKey()))
 				.flatMap(annot -> SymbolCollector.getSymbolsFrom(FeatureExpression.getExpr(annot.getValue()))
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/wrapper/VariabilityConstants.java b/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/wrapper/VariabilityConstants.java
index 993a41d..94f8c7b 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/wrapper/VariabilityConstants.java
+++ b/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/wrapper/VariabilityConstants.java
@@ -8,7 +8,7 @@
  */
 public interface VariabilityConstants {
 	public String PRESENCE_CONDITION = "presenceCondition";
-	public String FEATURE_MODEL = "featureModel";
+	public String FEATURE_CONSTRAINT = "featureConstraint";
 	public String INJECTIVE_MATCHING_PC = "injectiveMatchingPresenceCondition";
 	public String FEATURES = "features";
 }
diff --git a/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/wrapper/VariabilityRule.java b/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/wrapper/VariabilityRule.java
index 8332169..082b160 100644
--- a/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/wrapper/VariabilityRule.java
+++ b/plugins/variability/org.eclipse.emf.henshin.variability/src/org/eclipse/emf/henshin/variability/wrapper/VariabilityRule.java
@@ -50,7 +50,7 @@
  */
 public class VariabilityRule extends EObjectImpl implements Rule {
 	final Rule rule;
-	final Annotation featureModel;
+	final Annotation featureConstraint;
 	final Annotation injectiveMatchingPresenceCondition;
 	final Annotation features;
 	
@@ -65,7 +65,7 @@
 		while (it.hasNext()) {
 			Annotation anno = it.next();
 			String key = anno.getKey();
-			if (key.equals(VariabilityConstants.FEATURE_MODEL)) {
+			if (key.equals(VariabilityConstants.FEATURE_CONSTRAINT)) {
 				featModel = anno;
 			} else if (key.equals(VariabilityConstants.INJECTIVE_MATCHING_PC)) {
 				injMatPreCon = anno;
@@ -80,9 +80,9 @@
 		if(featModel != null) {
 			result[0] = featModel;
 		} else if (transactional) {
-			result[0] = VariabilityTransactionHelper.addAnnotation(rule, VariabilityConstants.FEATURE_MODEL, "");
+			result[0] = VariabilityTransactionHelper.addAnnotation(rule, VariabilityConstants.FEATURE_CONSTRAINT, "");
 		} else {
-			result[0] = VariabilityHelper.addAnnotation(rule, VariabilityConstants.FEATURE_MODEL, "");
+			result[0] = VariabilityHelper.addAnnotation(rule, VariabilityConstants.FEATURE_CONSTRAINT, "");
 		}
 		
 		if(injMatPreCon != null) {
@@ -143,7 +143,7 @@
 	VariabilityRule(Rule rule, boolean transactional) {
 		this.rule = rule;
 		Annotation[] annos = addVariabilityToRule(rule, transactional);
-		featureModel = annos[0];
+		featureConstraint = annos[0];
 		injectiveMatchingPresenceCondition = annos[1];
 		features = annos[2];
 	}
@@ -153,17 +153,17 @@
 	 * 
 	 * @return the feature model of this Rule.
 	 */
-	public String getFeatureModel() {
-		return featureModel.getValue();
+	public String getFeatureConstraint() {
+		return featureConstraint.getValue();
 	}
 
 	/**
 	 * Sets this Rule's feature model to the given model.
 	 * 
-	 * @param featureModelString the feature model to be set for this Rule.
+	 * @param featureConstraintString the feature model to be set for this Rule.
 	 */
-	public void setFeatureModel(String featureModelString) {
-		featureModel.setValue(featureModelString);
+	public void setFeatureConstraint(String featureConstraintString) {
+		featureConstraint.setValue(featureConstraintString);
 		// TODO: Update list of features
 	}
 
@@ -258,7 +258,7 @@
 		features.setValue(String.join(",", featureList));
 	}
 
-	String oldFeatureModel = "";
+	String oldFeatureConstraint = "";
 	String oldFeatures = "";
 	List<String> missingFeatures = new ArrayList<String>();;
 
@@ -273,8 +273,8 @@
 	}
 
 	private void calculateMissingFeatureNames() {
-		String currentModel = getFeatureModel();
-		if (!currentModel.trim().equals(oldFeatureModel) || !oldFeatures.equals(features.getValue())) {
+		String currentModel = getFeatureConstraint();
+		if (!currentModel.trim().equals(oldFeatureConstraint) || !oldFeatures.equals(features.getValue())) {
 			Sentence sentence = FeatureExpression.getExpr(currentModel);
 			missingFeatures.clear();
 			Set<PropositionSymbol> symbols = SymbolCollector.getSymbolsFrom(sentence);
@@ -285,7 +285,7 @@
 					missingFeatures.add(symbolName);
 				}
 			}
-			oldFeatureModel = currentModel.trim();
+			oldFeatureConstraint = currentModel.trim();
 			oldFeatures = features.getValue();
 		}
 	}