diff --git a/platform_specific/2019-06/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore b/platform_specific/2019-06/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore
index 66ae2df..a7dba7f 100644
--- a/platform_specific/2019-06/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore
+++ b/platform_specific/2019-06/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore
@@ -5467,6 +5467,7 @@
             <parameters xmi:id="_q6QPkId1EemTGPCEQmMGWg" name="indentDefaultCase"
                 type="java.lang.String"/>
             <parameters xmi:id="_q6jKgId1EemTGPCEQmMGWg" name="_List" type="java.lang.String"/>
+            <parameters xmi:id="_y4yXsC4OEeqcu-Qis7pW9g" name="hasSwitch" type="java.lang.Boolean"/>
             <orchestration xmi:type="pattern:SuperCall" xmi:id="_q4Z1cId1EemTGPCEQmMGWg"/>
             <orchestration xmi:type="pattern:MethodCall" xmi:id="_q7MDsId1EemTGPCEQmMGWg"
                 called="#_051_y2J-Ed-FqczH3ESmRw"/>
diff --git a/platform_specific/2019-06/org.eclipse.egf.emf.pattern/generated/org/eclipse/egf/emf/pattern/edit/call/ItemProvider/ItemProviderinsert.java b/platform_specific/2019-06/org.eclipse.egf.emf.pattern/generated/org/eclipse/egf/emf/pattern/edit/call/ItemProvider/ItemProviderinsert.java
index 8f97571..2f77c46 100644
--- a/platform_specific/2019-06/org.eclipse.egf.emf.pattern/generated/org/eclipse/egf/emf/pattern/edit/call/ItemProvider/ItemProviderinsert.java
+++ b/platform_specific/2019-06/org.eclipse.egf.emf.pattern/generated/org/eclipse/egf/emf/pattern/edit/call/ItemProvider/ItemProviderinsert.java
@@ -1,4 +1,4 @@
-//Generated with EGF 1.6.1.201902111324
+//Generated with EGF 1.6.2.202001021507
 package org.eclipse.egf.emf.pattern.edit.call.ItemProvider;
 
 import org.eclipse.egf.emf.pattern.base.*;
@@ -60,6 +60,8 @@
 		//this pattern can only be called by another (i.e. it's not an entry point in execution)
 		List<Object> _ListList = null;
 		//this pattern can only be called by another (i.e. it's not an entry point in execution)
+		List<Object> hasSwitchList = null;
+		//this pattern can only be called by another (i.e. it's not an entry point in execution)
 
 		for (Object genClassParameter : genClassList) {
 			for (Object genPackageParameter : genPackageList) {
@@ -68,20 +70,23 @@
 						for (Object forceDefaultCaseParameter : forceDefaultCaseList) {
 							for (Object indentDefaultCaseParameter : indentDefaultCaseList) {
 								for (Object _ListParameter : _ListList) {
+									for (Object hasSwitchParameter : hasSwitchList) {
 
-									this.genClass = (org.eclipse.emf.codegen.ecore.genmodel.GenClass) genClassParameter;
-									this.genPackage = (org.eclipse.emf.codegen.ecore.genmodel.GenPackage) genPackageParameter;
-									this.genModel = (org.eclipse.emf.codegen.ecore.genmodel.GenModel) genModelParameter;
-									this.isJDK50 = (java.lang.Boolean) isJDK50Parameter;
-									this.forceDefaultCase = (java.lang.Boolean) forceDefaultCaseParameter;
-									this.indentDefaultCase = (java.lang.String) indentDefaultCaseParameter;
-									this._List = (java.lang.String) _ListParameter;
+										this.genClass = (org.eclipse.emf.codegen.ecore.genmodel.GenClass) genClassParameter;
+										this.genPackage = (org.eclipse.emf.codegen.ecore.genmodel.GenPackage) genPackageParameter;
+										this.genModel = (org.eclipse.emf.codegen.ecore.genmodel.GenModel) genModelParameter;
+										this.isJDK50 = (java.lang.Boolean) isJDK50Parameter;
+										this.forceDefaultCase = (java.lang.Boolean) forceDefaultCaseParameter;
+										this.indentDefaultCase = (java.lang.String) indentDefaultCaseParameter;
+										this._List = (java.lang.String) _ListParameter;
+										this.hasSwitch = (java.lang.Boolean) hasSwitchParameter;
 
-									if (preCondition(ctx)) {
-										ctx.setNode(new Node.Container(currentNode, getClass()));
-										orchestration(ctx);
+										if (preCondition(ctx)) {
+											ctx.setNode(new Node.Container(currentNode, getClass()));
+											orchestration(ctx);
+										}
+
 									}
-
 								}
 							}
 						}
@@ -113,6 +118,7 @@
 			parameterValues.put("forceDefaultCase", this.forceDefaultCase);
 			parameterValues.put("indentDefaultCase", this.indentDefaultCase);
 			parameterValues.put("_List", this._List);
+			parameterValues.put("hasSwitch", this.hasSwitch);
 			String outputWithCallBack = OutputManager.computeLoopOutput(ictx);
 			String loop = OutputManager.computeLoopOutputWithoutCallback(ictx);
 			ictx.getReporter().loopFinished(loop, outputWithCallBack, ictx, parameterValues);
@@ -162,6 +168,12 @@
 		this._List = object;
 	}
 
+	protected java.lang.Boolean hasSwitch = null;
+
+	public void set_hasSwitch(java.lang.Boolean object) {
+		this.hasSwitch = object;
+	}
+
 	public Map<String, Object> getParameters() {
 		final Map<String, Object> parameters = new HashMap<String, Object>();
 		parameters.put("genClass", this.genClass);
@@ -171,6 +183,7 @@
 		parameters.put("forceDefaultCase", this.forceDefaultCase);
 		parameters.put("indentDefaultCase", this.indentDefaultCase);
 		parameters.put("_List", this._List);
+		parameters.put("hasSwitch", this.hasSwitch);
 		return parameters;
 	}
 
