bug 392903: 
* new model elements
* util class for invocation
diff --git a/bundles/org.eclipse.e4.ui.di/src/org/eclipse/e4/ui/di/LifecycleAboutToHide.java b/bundles/org.eclipse.e4.ui.di/src/org/eclipse/e4/ui/di/LifecycleAboutToHide.java
new file mode 100644
index 0000000..9ca5e12
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.di/src/org/eclipse/e4/ui/di/LifecycleAboutToHide.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.e4.ui.di;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Parts can specify this annotation on one of its methods to tag it as the
+ * method to be invoked when it has been granted focus.
+ * <p>
+ * This annotation must not be applied to more than one method on a class. If
+ * multiple methods of the class are tagged with this this annotation, only one
+ * of them will be called to grant focus to the part.
+ * </p>
+ */
+@Documented
+@Target({ ElementType.METHOD })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface LifecycleAboutToHide {
+	// intentionally left empty
+}
diff --git a/bundles/org.eclipse.e4.ui.di/src/org/eclipse/e4/ui/di/LifecycleAboutToShow.java b/bundles/org.eclipse.e4.ui.di/src/org/eclipse/e4/ui/di/LifecycleAboutToShow.java
new file mode 100644
index 0000000..9f5d084
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.di/src/org/eclipse/e4/ui/di/LifecycleAboutToShow.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.e4.ui.di;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Parts can specify this annotation on one of its methods to tag it as the
+ * method to be invoked when it has been granted focus.
+ * <p>
+ * This annotation must not be applied to more than one method on a class. If
+ * multiple methods of the class are tagged with this this annotation, only one
+ * of them will be called to grant focus to the part.
+ * </p>
+ */
+@Documented
+@Target({ ElementType.METHOD })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface LifecycleAboutToShow {
+	// intentionally left empty
+}
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/plugin.properties b/bundles/org.eclipse.e4.ui.model.workbench.edit/plugin.properties
index 13f120a..9a5f012 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench.edit/plugin.properties
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/plugin.properties
@@ -282,3 +282,5 @@
 _UI_SnippetContainer_type = Snippet Container
 _UI_SnippetContainer_snippets_feature = Snippets
 _UI_ApplicationElement_persistedState_feature = Persisted State
+_UI_LifecycledElement_type = Lifecycled Element
+_UI_LifecycledElement_lifecyleURIs_feature = Lifecyle UR Is
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java
index 290d29a..d3f950f 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java
@@ -73,6 +73,7 @@
 			addContextPropertyDescriptor(object);
 			addVariablesPropertyDescriptor(object);
 			addBindingContextsPropertyDescriptor(object);
+			addLifecyleURIsPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
@@ -144,6 +145,28 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Lifecyle UR Is feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLifecyleURIsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LifecycledElement_lifecyleURIs_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_LifecycledElement_lifecyleURIs_feature", "_UI_LifecycledElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
 	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
 	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
@@ -222,6 +245,7 @@
 			case ApplicationPackageImpl.APPLICATION__CONTEXT:
 			case ApplicationPackageImpl.APPLICATION__VARIABLES:
 			case ApplicationPackageImpl.APPLICATION__BINDING_CONTEXTS:
+			case ApplicationPackageImpl.APPLICATION__LIFECYLE_UR_IS:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 			case ApplicationPackageImpl.APPLICATION__PROPERTIES:
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveItemProvider.java b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveItemProvider.java
index 230fe5f..61e71ab 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveItemProvider.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveItemProvider.java
@@ -76,6 +76,7 @@
 			addTooltipPropertyDescriptor(object);
 			addContextPropertyDescriptor(object);
 			addVariablesPropertyDescriptor(object);
+			addLifecyleURIsPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
@@ -191,6 +192,28 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Lifecyle UR Is feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLifecyleURIsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LifecycledElement_lifecyleURIs_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_LifecycledElement_lifecyleURIs_feature", "_UI_LifecycledElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
 	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
 	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
@@ -263,6 +286,7 @@
 			case AdvancedPackageImpl.PERSPECTIVE__TOOLTIP:
 			case AdvancedPackageImpl.PERSPECTIVE__CONTEXT:
 			case AdvancedPackageImpl.PERSPECTIVE__VARIABLES:
+			case AdvancedPackageImpl.PERSPECTIVE__LIFECYLE_UR_IS:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 			case AdvancedPackageImpl.PERSPECTIVE__PROPERTIES:
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WindowItemProvider.java b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WindowItemProvider.java
index c1f245d..388200d 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WindowItemProvider.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WindowItemProvider.java
@@ -81,6 +81,7 @@
 			addContextPropertyDescriptor(object);
 			addVariablesPropertyDescriptor(object);
 			addBindingContextsPropertyDescriptor(object);
+			addLifecyleURIsPropertyDescriptor(object);
 			addXPropertyDescriptor(object);
 			addYPropertyDescriptor(object);
 			addWidthPropertyDescriptor(object);
@@ -223,6 +224,28 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Lifecyle UR Is feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLifecyleURIsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LifecycledElement_lifecyleURIs_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_LifecycledElement_lifecyleURIs_feature", "_UI_LifecycledElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the X feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -410,6 +433,7 @@
 			case BasicPackageImpl.WINDOW__CONTEXT:
 			case BasicPackageImpl.WINDOW__VARIABLES:
 			case BasicPackageImpl.WINDOW__BINDING_CONTEXTS:
+			case BasicPackageImpl.WINDOW__LIFECYLE_UR_IS:
 			case BasicPackageImpl.WINDOW__X:
 			case BasicPackageImpl.WINDOW__Y:
 			case BasicPackageImpl.WINDOW__WIDTH:
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProvider.java b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProvider.java
index 2aff8d7..24f21e2 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProvider.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProvider.java
@@ -70,6 +70,7 @@
 			super.getPropertyDescriptors(object);
 
 			addSelectedElementPropertyDescriptor(object);
+			addLifecyleURIsPropertyDescriptor(object);
 			addEnabledPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -98,6 +99,28 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Lifecyle UR Is feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLifecyleURIsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LifecycledElement_lifecyleURIs_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_LifecycledElement_lifecyleURIs_feature", "_UI_LifecycledElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the Enabled feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -186,6 +209,7 @@
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(MMenu.class)) {
+			case MenuPackageImpl.MENU__LIFECYLE_UR_IS:
 			case MenuPackageImpl.MENU__ENABLED:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore b/bundles/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore
index 012d1c3..21d3a41 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore
+++ b/bundles/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore
@@ -1,472 +1,481 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="application" nsURI="http://www.eclipse.org/ui/2010/UIModel/application"

-    nsPrefix="application">

-  <eClassifiers xsi:type="ecore:EDataType" name="IEclipseContext" instanceClassName="org.eclipse.e4.core.contexts.IEclipseContext"

-      serializable="false"/>

-  <eClassifiers xsi:type="ecore:EClass" name="StringToStringMap" instanceClassName="java.util.Map$Entry">

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Application">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="commands" upperBound="-1"

-        eType="#//commands/Command" containment="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="addons" upperBound="-1"

-        eType="#//Addon" containment="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="categories" upperBound="-1"

-        eType="#//commands/Category" containment="true"/>

-    <eGenericSuperTypes eClassifier="#//ui/ElementContainer">

-      <eTypeArguments eClassifier="#//ui/basic/Window"/>

-    </eGenericSuperTypes>

-    <eGenericSuperTypes eClassifier="#//ui/Context"/>

-    <eGenericSuperTypes eClassifier="#//commands/HandlerContainer"/>

-    <eGenericSuperTypes eClassifier="#//commands/BindingTableContainer"/>

-    <eGenericSuperTypes eClassifier="#//descriptor/basic/PartDescriptorContainer"/>

-    <eGenericSuperTypes eClassifier="#//commands/Bindings"/>

-    <eGenericSuperTypes eClassifier="#//ui/menu/MenuContributions"/>

-    <eGenericSuperTypes eClassifier="#//ui/menu/ToolBarContributions"/>

-    <eGenericSuperTypes eClassifier="#//ui/menu/TrimContributions"/>

-    <eGenericSuperTypes eClassifier="#//ui/SnippetContainer"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ApplicationElement" abstract="true">

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="elementId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="persistedState" upperBound="-1"

-        eType="#//StringToStringMap" containment="true"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tags" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributorURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="transientData" upperBound="-1"

-        eType="#//StringToObjectMap" transient="true" containment="true"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Contribution" abstract="true" eSuperTypes="#//ApplicationElement">

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributionURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"

-        transient="true" derived="true"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Addon" eSuperTypes="#//Contribution"/>

-  <eClassifiers xsi:type="ecore:EClass" name="StringToObjectMap" instanceClassName="java.util.Map$Entry">

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>

-  </eClassifiers>

-  <eSubpackages name="commands" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/commands"

-      nsPrefix="commands">

-    <eClassifiers xsi:type="ecore:EClass" name="BindingTableContainer" abstract="true"

-        interface="true">

-      <eStructuralFeatures xsi:type="ecore:EReference" name="bindingTables" upperBound="-1"

-          eType="#//commands/BindingTable" containment="true"/>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="rootContext" upperBound="-1"

-          eType="#//commands/BindingContext" containment="true"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="Bindings" abstract="true" interface="true">

-      <eStructuralFeatures xsi:type="ecore:EReference" name="bindingContexts" upperBound="-1"

-          eType="#//commands/BindingContext"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="BindingContext" eSuperTypes="#//ApplicationElement">

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"

-          eType="#//commands/BindingContext" containment="true"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="BindingTable" eSuperTypes="#//ApplicationElement">

-      <eStructuralFeatures xsi:type="ecore:EReference" name="bindings" upperBound="-1"

-          eType="#//commands/KeyBinding" containment="true"/>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="bindingContext" lowerBound="1"

-          eType="#//commands/BindingContext"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="Command" eSuperTypes="#//ApplicationElement">

-      <eOperations name="getLocalizedCommandName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eOperations name="getLocalizedDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="commandName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"

-          eType="#//commands/CommandParameter" containment="true"/>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="category" eType="#//commands/Category"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="CommandParameter" eSuperTypes="#//ApplicationElement">

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"

-          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

-          defaultValueLiteral="true"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="Handler" eSuperTypes="#//Contribution">

-      <eStructuralFeatures xsi:type="ecore:EReference" name="command" lowerBound="1"

-          eType="#//commands/Command"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="HandlerContainer" abstract="true"

-        interface="true">

-      <eStructuralFeatures xsi:type="ecore:EReference" name="handlers" upperBound="-1"

-          eType="#//commands/Handler" containment="true"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="KeyBinding" eSuperTypes="#//ApplicationElement #//commands/KeySequence">

-      <eStructuralFeatures xsi:type="ecore:EReference" name="command" lowerBound="1"

-          eType="#//commands/Command"/>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"

-          eType="#//commands/Parameter" containment="true"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="KeySequence" abstract="true" interface="true">

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="keySequence" lowerBound="1"

-          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//ApplicationElement">

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EDataType" name="ParameterizedCommand" instanceClassName="org.eclipse.core.commands.ParameterizedCommand"

-        serializable="false"/>

-    <eClassifiers xsi:type="ecore:EClass" name="Category" eSuperTypes="#//ApplicationElement">

-      <eOperations name="getLocalizedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eOperations name="getLocalizedDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"

-          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    </eClassifiers>

-  </eSubpackages>

-  <eSubpackages name="ui" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/ui"

-      nsPrefix="ui">

-    <eClassifiers xsi:type="ecore:EClass" name="Context" abstract="true" interface="true">

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="context" eType="#//IEclipseContext"

-          transient="true" derived="true"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="variables" ordered="false"

-          upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"

-          eType="#//StringToStringMap" containment="true"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="Dirtyable" abstract="true" interface="true">

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dirty" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

-          transient="true" derived="true"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="Input" abstract="true" interface="true">

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="inputURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="UIElement" abstract="true" eSuperTypes="#//ApplicationElement">

-      <eOperations name="getLocalizedAccessibilityPhrase" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="widget" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"

-          transient="true" derived="true"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="renderer" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"

-          transient="true" derived="true"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="toBeRendered" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

-          defaultValueLiteral="true"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="onTop" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="visible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

-          defaultValueLiteral="true"/>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eOpposite="#//ui/ElementContainer/children">

-        <eGenericType eClassifier="#//ui/ElementContainer">

-          <eTypeArguments eClassifier="#//ui/UIElement"/>

-        </eGenericType>

-      </eStructuralFeatures>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="containerData" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="curSharedRef" eType="#//ui/advanced/Placeholder"

-          transient="true" derived="true"/>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="visibleWhen" eType="#//ui/Expression"

-          containment="true"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="accessibilityPhrase"

-          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="ElementContainer" abstract="true"

-        eSuperTypes="#//ui/UIElement">

-      <eTypeParameters name="T">

-        <eBounds eClassifier="#//ui/UIElement"/>

-      </eTypeParameters>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"

-          containment="true" eOpposite="#//ui/UIElement/parent">

-        <eGenericType eTypeParameter="#//ui/ElementContainer/T"/>

-      </eStructuralFeatures>

-      <eStructuralFeatures xsi:type="ecore:EReference" name="selectedElement">

-        <eGenericType eTypeParameter="#//ui/ElementContainer/T"/>

-      </eStructuralFeatures>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="UILabel" abstract="true" interface="true">

-      <eOperations name="getLocalizedLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eOperations name="getLocalizedTooltip" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="iconURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="tooltip" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="GenericStack" abstract="true">

-      <eTypeParameters name="T">

-        <eBounds eClassifier="#//ui/UIElement"/>

-      </eTypeParameters>

-      <eGenericSuperTypes eClassifier="#//ui/ElementContainer">

-        <eTypeArguments eTypeParameter="#//ui/GenericStack/T"/>

-      </eGenericSuperTypes>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="GenericTile" abstract="true">

-      <eTypeParameters name="T">

-        <eBounds eClassifier="#//ui/UIElement"/>

-      </eTypeParameters>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="horizontal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>

-      <eGenericSuperTypes eClassifier="#//ui/ElementContainer">

-        <eTypeArguments eTypeParameter="#//ui/GenericTile/T"/>

-      </eGenericSuperTypes>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="GenericTrimContainer" abstract="true">

-      <eTypeParameters name="T">

-        <eBounds eClassifier="#//ui/UIElement"/>

-      </eTypeParameters>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="side" lowerBound="1"

-          eType="#//ui/SideValue"/>

-      <eGenericSuperTypes eClassifier="#//ui/ElementContainer">

-        <eTypeArguments eTypeParameter="#//ui/GenericTrimContainer/T"/>

-      </eGenericSuperTypes>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EEnum" name="SideValue">

-      <eLiterals name="Top"/>

-      <eLiterals name="Bottom" value="1"/>

-      <eLiterals name="Left" value="2"/>

-      <eLiterals name="Right" value="3"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="Expression" abstract="true" eSuperTypes="#//ApplicationElement"/>

-    <eClassifiers xsi:type="ecore:EClass" name="CoreExpression" eSuperTypes="#//ui/Expression">

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="coreExpressionId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

-          defaultValueLiteral=""/>

-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="coreExpression" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"

-          transient="true"/>

-    </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="SnippetContainer" abstract="true"

-        interface="true">

-      <eStructuralFeatures xsi:type="ecore:EReference" name="snippets" upperBound="-1"

-          eType="#//ui/UIElement" containment="true"/>

-    </eClassifiers>

-    <eSubpackages name="menu" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu"

-        nsPrefix="menu">

-      <eClassifiers xsi:type="ecore:EEnum" name="ItemType">

-        <eLiterals name="Push"/>

-        <eLiterals name="Check" value="1"/>

-        <eLiterals name="Radio" value="2"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="Item" abstract="true" eSuperTypes="#//ui/UIElement #//ui/UILabel">

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="enabled" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

-            defaultValueLiteral="true"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="selected" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1"

-            eType="#//ui/menu/ItemType"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="HandledItem" abstract="true" eSuperTypes="#//ui/menu/Item">

-        <eStructuralFeatures xsi:type="ecore:EReference" name="command" eType="#//commands/Command"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="wbCommand" eType="#//commands/ParameterizedCommand"

-            transient="true"/>

-        <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"

-            eType="#//commands/Parameter" containment="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="MenuElement" abstract="true" eSuperTypes="#//ui/UIElement #//ui/UILabel">

-        <eOperations name="getLocalizedMnemonics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="mnemonics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="MenuItem" abstract="true" eSuperTypes="#//ui/menu/Item #//ui/menu/MenuElement"/>

-      <eClassifiers xsi:type="ecore:EClass" name="MenuSeparator" eSuperTypes="#//ui/menu/MenuElement"/>

-      <eClassifiers xsi:type="ecore:EClass" name="Menu">

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="enabled" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

-            defaultValueLiteral="true"/>

-        <eGenericSuperTypes eClassifier="#//ui/menu/MenuElement"/>

-        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">

-          <eTypeArguments eClassifier="#//ui/menu/MenuElement"/>

-        </eGenericSuperTypes>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="MenuContribution">

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="positionInParent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

-            defaultValueLiteral=""/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="parentId" lowerBound="1"

-            eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">

-          <eTypeArguments eClassifier="#//ui/menu/MenuElement"/>

-        </eGenericSuperTypes>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="PopupMenu" eSuperTypes="#//ui/menu/Menu #//ui/Context"/>

-      <eClassifiers xsi:type="ecore:EClass" name="DirectMenuItem" eSuperTypes="#//ui/menu/MenuItem #//Contribution"/>

-      <eClassifiers xsi:type="ecore:EClass" name="HandledMenuItem" eSuperTypes="#//ui/menu/MenuItem #//ui/menu/HandledItem"/>

-      <eClassifiers xsi:type="ecore:EClass" name="ToolItem" abstract="true" eSuperTypes="#//ui/menu/Item #//ui/menu/ToolBarElement">

-        <eStructuralFeatures xsi:type="ecore:EReference" name="menu" eType="#//ui/menu/Menu"

-            containment="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="ToolBar">

-        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">

-          <eTypeArguments eClassifier="#//ui/menu/ToolBarElement"/>

-        </eGenericSuperTypes>

-        <eGenericSuperTypes eClassifier="#//ui/basic/TrimElement"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="ToolBarElement" abstract="true"

-          eSuperTypes="#//ui/UIElement"/>

-      <eClassifiers xsi:type="ecore:EClass" name="ToolControl" eSuperTypes="#//ui/menu/ToolBarElement #//Contribution #//ui/basic/TrimElement"/>

-      <eClassifiers xsi:type="ecore:EClass" name="HandledToolItem" eSuperTypes="#//ui/menu/ToolItem #//ui/menu/HandledItem"/>

-      <eClassifiers xsi:type="ecore:EClass" name="DirectToolItem" eSuperTypes="#//ui/menu/ToolItem #//Contribution"/>

-      <eClassifiers xsi:type="ecore:EClass" name="ToolBarSeparator" eSuperTypes="#//ui/menu/ToolBarElement"/>

-      <eClassifiers xsi:type="ecore:EClass" name="MenuContributions" abstract="true"

-          interface="true">

-        <eStructuralFeatures xsi:type="ecore:EReference" name="menuContributions"

-            upperBound="-1" eType="#//ui/menu/MenuContribution" containment="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="RenderedMenu" eSuperTypes="#//ui/menu/Menu">

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributionManager"

-            eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"

-            transient="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="RenderedToolBar" eSuperTypes="#//ui/menu/ToolBar">

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributionManager"

-            eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"

-            transient="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="ToolBarContribution">

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="parentId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="positionInParent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">

-          <eTypeArguments eClassifier="#//ui/menu/ToolBarElement"/>

-        </eGenericSuperTypes>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="ToolBarContributions" abstract="true"

-          interface="true">

-        <eStructuralFeatures xsi:type="ecore:EReference" name="toolBarContributions"

-            upperBound="-1" eType="#//ui/menu/ToolBarContribution" containment="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="TrimContribution">

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="parentId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="positionInParent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">

-          <eTypeArguments eClassifier="#//ui/basic/TrimElement"/>

-        </eGenericSuperTypes>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="TrimContributions" abstract="true"

-          interface="true">

-        <eStructuralFeatures xsi:type="ecore:EReference" name="trimContributions"

-            upperBound="-1" eType="#//ui/menu/TrimContribution" containment="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="RenderedMenuItem" eSuperTypes="#//ui/menu/MenuItem">

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributionItem" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"

-            transient="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="OpaqueToolItem" eSuperTypes="#//ui/menu/ToolItem">

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="opaqueItem" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"

-            transient="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="OpaqueMenuItem" eSuperTypes="#//ui/menu/MenuItem">

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="opaqueItem" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"

-            transient="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="OpaqueMenuSeparator" eSuperTypes="#//ui/menu/MenuSeparator">

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="opaqueItem" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"

-            transient="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="OpaqueMenu" eSuperTypes="#//ui/menu/Menu"/>

-    </eSubpackages>

-    <eSubpackages name="basic" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic"

-        nsPrefix="basic">

-      <eClassifiers xsi:type="ecore:EClass" name="Part" eSuperTypes="#//ui/UIElement #//ui/basic/PartSashContainerElement #//ui/basic/StackElement #//Contribution #//ui/Context #//ui/UILabel #//commands/HandlerContainer #//ui/Dirtyable #//commands/Bindings #//ui/basic/WindowElement">

-        <eOperations name="getLocalizedDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-        <eStructuralFeatures xsi:type="ecore:EReference" name="menus" upperBound="-1"

-            eType="#//ui/menu/Menu" containment="true"/>

-        <eStructuralFeatures xsi:type="ecore:EReference" name="toolbar" eType="#//ui/menu/ToolBar"

-            containment="true"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="closeable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

-            defaultValueLiteral="false"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="InputPart" eSuperTypes="#//ui/basic/Part #//ui/Input"/>

-      <eClassifiers xsi:type="ecore:EClass" name="PartStack">

-        <eGenericSuperTypes eClassifier="#//ui/GenericStack">

-          <eTypeArguments eClassifier="#//ui/basic/StackElement"/>

-        </eGenericSuperTypes>

-        <eGenericSuperTypes eClassifier="#//ui/basic/PartSashContainerElement"/>

-        <eGenericSuperTypes eClassifier="#//ui/basic/WindowElement"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="PartSashContainer">

-        <eGenericSuperTypes eClassifier="#//ui/GenericTile">

-          <eTypeArguments eClassifier="#//ui/basic/PartSashContainerElement"/>

-        </eGenericSuperTypes>

-        <eGenericSuperTypes eClassifier="#//ui/basic/PartSashContainerElement"/>

-        <eGenericSuperTypes eClassifier="#//ui/basic/WindowElement"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="Window">

-        <eStructuralFeatures xsi:type="ecore:EReference" name="mainMenu" eType="#//ui/menu/Menu"

-            containment="true"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"

-            defaultValueLiteral="-2147483648"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="y" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"

-            defaultValueLiteral="-2147483648"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="width" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"

-            defaultValueLiteral="-1"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"

-            defaultValueLiteral="-1"/>

-        <eStructuralFeatures xsi:type="ecore:EReference" name="windows" upperBound="-1"

-            eType="#//ui/basic/Window" containment="true"/>

-        <eStructuralFeatures xsi:type="ecore:EReference" name="sharedElements" upperBound="-1"

-            eType="#//ui/UIElement" containment="true"/>

-        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">

-          <eTypeArguments eClassifier="#//ui/basic/WindowElement"/>

-        </eGenericSuperTypes>

-        <eGenericSuperTypes eClassifier="#//ui/UILabel"/>

-        <eGenericSuperTypes eClassifier="#//ui/Context"/>

-        <eGenericSuperTypes eClassifier="#//commands/HandlerContainer"/>

-        <eGenericSuperTypes eClassifier="#//commands/Bindings"/>

-        <eGenericSuperTypes eClassifier="#//ui/SnippetContainer"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="TrimmedWindow" eSuperTypes="#//ui/basic/Window">

-        <eStructuralFeatures xsi:type="ecore:EReference" name="trimBars" upperBound="-1"

-            eType="#//ui/basic/TrimBar" containment="true"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="TrimElement" abstract="true" eSuperTypes="#//ui/UIElement"/>

-      <eClassifiers xsi:type="ecore:EClass" name="PartSashContainerElement" abstract="true"

-          interface="true" eSuperTypes="#//ui/UIElement"/>

-      <eClassifiers xsi:type="ecore:EClass" name="WindowElement" abstract="true" interface="true"

-          eSuperTypes="#//ui/UIElement"/>

-      <eClassifiers xsi:type="ecore:EClass" name="TrimBar">

-        <eGenericSuperTypes eClassifier="#//ui/GenericTrimContainer">

-          <eTypeArguments eClassifier="#//ui/basic/TrimElement"/>

-        </eGenericSuperTypes>

-        <eGenericSuperTypes eClassifier="#//ui/UIElement"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="StackElement" abstract="true" interface="true"

-          eSuperTypes="#//ui/UIElement"/>

-    </eSubpackages>

-    <eSubpackages name="advanced" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced"

-        nsPrefix="advanced">

-      <eClassifiers xsi:type="ecore:EClass" name="Placeholder" eSuperTypes="#//ui/UIElement #//ui/basic/PartSashContainerElement #//ui/basic/StackElement">

-        <eStructuralFeatures xsi:type="ecore:EReference" name="ref" lowerBound="1"

-            eType="#//ui/UIElement"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="closeable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

-            defaultValueLiteral="false"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="Perspective">

-        <eStructuralFeatures xsi:type="ecore:EReference" name="windows" upperBound="-1"

-            eType="#//ui/basic/Window" containment="true"/>

-        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">

-          <eTypeArguments eClassifier="#//ui/basic/PartSashContainerElement"/>

-        </eGenericSuperTypes>

-        <eGenericSuperTypes eClassifier="#//ui/UILabel"/>

-        <eGenericSuperTypes eClassifier="#//ui/Context"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="PerspectiveStack">

-        <eGenericSuperTypes eClassifier="#//ui/UIElement"/>

-        <eGenericSuperTypes eClassifier="#//ui/GenericStack">

-          <eTypeArguments eClassifier="#//ui/advanced/Perspective"/>

-        </eGenericSuperTypes>

-        <eGenericSuperTypes eClassifier="#//ui/basic/PartSashContainerElement"/>

-        <eGenericSuperTypes eClassifier="#//ui/basic/WindowElement"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="Area" eSuperTypes="#//ui/basic/PartSashContainer #//ui/UILabel"/>

-    </eSubpackages>

-  </eSubpackages>

-  <eSubpackages name="descriptor" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/descriptor"

-      nsPrefix="descriptor">

-    <eSubpackages name="basic" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/descriptor/basic"

-        nsPrefix="basic">

-      <eClassifiers xsi:type="ecore:EClass" name="PartDescriptor" eSuperTypes="#//ApplicationElement #//ui/UILabel #//commands/HandlerContainer #//commands/Bindings">

-        <eOperations name="getLocalizedDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="allowMultiple" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-        <eStructuralFeatures xsi:type="ecore:EReference" name="menus" upperBound="-1"

-            eType="#//ui/menu/Menu" containment="true"/>

-        <eStructuralFeatures xsi:type="ecore:EReference" name="toolbar" eType="#//ui/menu/ToolBar"

-            containment="true"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="closeable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

-            defaultValueLiteral="false"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="dirtyable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributionURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-        <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-      </eClassifiers>

-      <eClassifiers xsi:type="ecore:EClass" name="PartDescriptorContainer" abstract="true"

-          interface="true">

-        <eStructuralFeatures xsi:type="ecore:EReference" name="descriptors" upperBound="-1"

-            eType="#//descriptor/basic/PartDescriptor" containment="true"/>

-      </eClassifiers>

-    </eSubpackages>

-  </eSubpackages>

-</ecore:EPackage>

+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="application" nsURI="http://www.eclipse.org/ui/2010/UIModel/application"
+    nsPrefix="application">
+  <eClassifiers xsi:type="ecore:EDataType" name="IEclipseContext" instanceClassName="org.eclipse.e4.core.contexts.IEclipseContext"
+      serializable="false"/>
+  <eClassifiers xsi:type="ecore:EClass" name="StringToStringMap" instanceClassName="java.util.Map$Entry">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Application">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="commands" upperBound="-1"
+        eType="#//commands/Command" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="addons" upperBound="-1"
+        eType="#//Addon" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="categories" upperBound="-1"
+        eType="#//commands/Category" containment="true"/>
+    <eGenericSuperTypes eClassifier="#//ui/ElementContainer">
+      <eTypeArguments eClassifier="#//ui/basic/Window"/>
+    </eGenericSuperTypes>
+    <eGenericSuperTypes eClassifier="#//ui/Context"/>
+    <eGenericSuperTypes eClassifier="#//commands/HandlerContainer"/>
+    <eGenericSuperTypes eClassifier="#//commands/BindingTableContainer"/>
+    <eGenericSuperTypes eClassifier="#//descriptor/basic/PartDescriptorContainer"/>
+    <eGenericSuperTypes eClassifier="#//commands/Bindings"/>
+    <eGenericSuperTypes eClassifier="#//ui/menu/MenuContributions"/>
+    <eGenericSuperTypes eClassifier="#//ui/menu/ToolBarContributions"/>
+    <eGenericSuperTypes eClassifier="#//ui/menu/TrimContributions"/>
+    <eGenericSuperTypes eClassifier="#//ui/SnippetContainer"/>
+    <eGenericSuperTypes eClassifier="#//ui/LifecycledElement"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ApplicationElement" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="elementId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="persistedState" upperBound="-1"
+        eType="#//StringToStringMap" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tags" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributorURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="transientData" upperBound="-1"
+        eType="#//StringToObjectMap" transient="true" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Contribution" abstract="true" eSuperTypes="#//ApplicationElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributionURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
+        transient="true" derived="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Addon" eSuperTypes="#//Contribution"/>
+  <eClassifiers xsi:type="ecore:EClass" name="StringToObjectMap" instanceClassName="java.util.Map$Entry">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+  </eClassifiers>
+  <eSubpackages name="commands" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/commands"
+      nsPrefix="commands">
+    <eClassifiers xsi:type="ecore:EClass" name="BindingTableContainer" abstract="true"
+        interface="true">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="bindingTables" upperBound="-1"
+          eType="#//commands/BindingTable" containment="true"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="rootContext" upperBound="-1"
+          eType="#//commands/BindingContext" containment="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Bindings" abstract="true" interface="true">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="bindingContexts" upperBound="-1"
+          eType="#//commands/BindingContext"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="BindingContext" eSuperTypes="#//ApplicationElement">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
+          eType="#//commands/BindingContext" containment="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="BindingTable" eSuperTypes="#//ApplicationElement">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="bindings" upperBound="-1"
+          eType="#//commands/KeyBinding" containment="true"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="bindingContext" lowerBound="1"
+          eType="#//commands/BindingContext"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Command" eSuperTypes="#//ApplicationElement">
+      <eOperations name="getLocalizedCommandName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eOperations name="getLocalizedDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="commandName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
+          eType="#//commands/CommandParameter" containment="true"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="category" eType="#//commands/Category"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="CommandParameter" eSuperTypes="#//ApplicationElement">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Handler" eSuperTypes="#//Contribution">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="command" lowerBound="1"
+          eType="#//commands/Command"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="HandlerContainer" abstract="true"
+        interface="true">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="handlers" upperBound="-1"
+          eType="#//commands/Handler" containment="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="KeyBinding" eSuperTypes="#//ApplicationElement #//commands/KeySequence">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="command" lowerBound="1"
+          eType="#//commands/Command"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
+          eType="#//commands/Parameter" containment="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="KeySequence" abstract="true" interface="true">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="keySequence" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//ApplicationElement">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="ParameterizedCommand" instanceClassName="org.eclipse.core.commands.ParameterizedCommand"
+        serializable="false"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Category" eSuperTypes="#//ApplicationElement">
+      <eOperations name="getLocalizedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eOperations name="getLocalizedDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="ui" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/ui"
+      nsPrefix="ui">
+    <eClassifiers xsi:type="ecore:EClass" name="Context" abstract="true" interface="true">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="context" eType="#//IEclipseContext"
+          transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="variables" ordered="false"
+          upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
+          eType="#//StringToStringMap" containment="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Dirtyable" abstract="true" interface="true">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dirty" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          transient="true" derived="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Input" abstract="true" interface="true">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="inputURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="UIElement" abstract="true" eSuperTypes="#//ApplicationElement">
+      <eOperations name="getLocalizedAccessibilityPhrase" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="widget" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
+          transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="renderer" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
+          transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="toBeRendered" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="onTop" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="visible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eOpposite="#//ui/ElementContainer/children">
+        <eGenericType eClassifier="#//ui/ElementContainer">
+          <eTypeArguments eClassifier="#//ui/UIElement"/>
+        </eGenericType>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="containerData" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="curSharedRef" eType="#//ui/advanced/Placeholder"
+          transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="visibleWhen" eType="#//ui/Expression"
+          containment="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="accessibilityPhrase"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ElementContainer" abstract="true"
+        eSuperTypes="#//ui/UIElement">
+      <eTypeParameters name="T">
+        <eBounds eClassifier="#//ui/UIElement"/>
+      </eTypeParameters>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
+          containment="true" eOpposite="#//ui/UIElement/parent">
+        <eGenericType eTypeParameter="#//ui/ElementContainer/T"/>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="selectedElement">
+        <eGenericType eTypeParameter="#//ui/ElementContainer/T"/>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="UILabel" abstract="true" interface="true">
+      <eOperations name="getLocalizedLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eOperations name="getLocalizedTooltip" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="iconURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="tooltip" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="GenericStack" abstract="true">
+      <eTypeParameters name="T">
+        <eBounds eClassifier="#//ui/UIElement"/>
+      </eTypeParameters>
+      <eGenericSuperTypes eClassifier="#//ui/ElementContainer">
+        <eTypeArguments eTypeParameter="#//ui/GenericStack/T"/>
+      </eGenericSuperTypes>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="GenericTile" abstract="true">
+      <eTypeParameters name="T">
+        <eBounds eClassifier="#//ui/UIElement"/>
+      </eTypeParameters>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="horizontal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+      <eGenericSuperTypes eClassifier="#//ui/ElementContainer">
+        <eTypeArguments eTypeParameter="#//ui/GenericTile/T"/>
+      </eGenericSuperTypes>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="GenericTrimContainer" abstract="true">
+      <eTypeParameters name="T">
+        <eBounds eClassifier="#//ui/UIElement"/>
+      </eTypeParameters>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="side" lowerBound="1"
+          eType="#//ui/SideValue"/>
+      <eGenericSuperTypes eClassifier="#//ui/ElementContainer">
+        <eTypeArguments eTypeParameter="#//ui/GenericTrimContainer/T"/>
+      </eGenericSuperTypes>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="SideValue">
+      <eLiterals name="Top"/>
+      <eLiterals name="Bottom" value="1"/>
+      <eLiterals name="Left" value="2"/>
+      <eLiterals name="Right" value="3"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Expression" abstract="true" eSuperTypes="#//ApplicationElement"/>
+    <eClassifiers xsi:type="ecore:EClass" name="CoreExpression" eSuperTypes="#//ui/Expression">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="coreExpressionId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+          defaultValueLiteral=""/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="coreExpression" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
+          transient="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="SnippetContainer" abstract="true"
+        interface="true">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="snippets" upperBound="-1"
+          eType="#//ui/UIElement" containment="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="LifecycledElement" abstract="true"
+        interface="true" eSuperTypes="#//ui/UIElement">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="lifecyleURIs" upperBound="-1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eSubpackages name="menu" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu"
+        nsPrefix="menu">
+      <eClassifiers xsi:type="ecore:EEnum" name="ItemType">
+        <eLiterals name="Push"/>
+        <eLiterals name="Check" value="1"/>
+        <eLiterals name="Radio" value="2"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="Item" abstract="true" eSuperTypes="#//ui/UIElement #//ui/UILabel">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="enabled" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+            defaultValueLiteral="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="selected" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1"
+            eType="#//ui/menu/ItemType"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="HandledItem" abstract="true" eSuperTypes="#//ui/menu/Item">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="command" eType="#//commands/Command"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="wbCommand" eType="#//commands/ParameterizedCommand"
+            transient="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
+            eType="#//commands/Parameter" containment="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="MenuElement" abstract="true" eSuperTypes="#//ui/UIElement #//ui/UILabel">
+        <eOperations name="getLocalizedMnemonics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="mnemonics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="MenuItem" abstract="true" eSuperTypes="#//ui/menu/Item #//ui/menu/MenuElement"/>
+      <eClassifiers xsi:type="ecore:EClass" name="MenuSeparator" eSuperTypes="#//ui/menu/MenuElement"/>
+      <eClassifiers xsi:type="ecore:EClass" name="Menu">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="enabled" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+            defaultValueLiteral="true"/>
+        <eGenericSuperTypes eClassifier="#//ui/menu/MenuElement"/>
+        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">
+          <eTypeArguments eClassifier="#//ui/menu/MenuElement"/>
+        </eGenericSuperTypes>
+        <eGenericSuperTypes eClassifier="#//ui/LifecycledElement"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="MenuContribution">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="positionInParent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+            defaultValueLiteral=""/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="parentId" lowerBound="1"
+            eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">
+          <eTypeArguments eClassifier="#//ui/menu/MenuElement"/>
+        </eGenericSuperTypes>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="PopupMenu" eSuperTypes="#//ui/menu/Menu #//ui/Context"/>
+      <eClassifiers xsi:type="ecore:EClass" name="DirectMenuItem" eSuperTypes="#//ui/menu/MenuItem #//Contribution"/>
+      <eClassifiers xsi:type="ecore:EClass" name="HandledMenuItem" eSuperTypes="#//ui/menu/MenuItem #//ui/menu/HandledItem"/>
+      <eClassifiers xsi:type="ecore:EClass" name="ToolItem" abstract="true" eSuperTypes="#//ui/menu/Item #//ui/menu/ToolBarElement">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="menu" eType="#//ui/menu/Menu"
+            containment="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="ToolBar">
+        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">
+          <eTypeArguments eClassifier="#//ui/menu/ToolBarElement"/>
+        </eGenericSuperTypes>
+        <eGenericSuperTypes eClassifier="#//ui/basic/TrimElement"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="ToolBarElement" abstract="true"
+          eSuperTypes="#//ui/UIElement"/>
+      <eClassifiers xsi:type="ecore:EClass" name="ToolControl" eSuperTypes="#//ui/menu/ToolBarElement #//Contribution #//ui/basic/TrimElement"/>
+      <eClassifiers xsi:type="ecore:EClass" name="HandledToolItem" eSuperTypes="#//ui/menu/ToolItem #//ui/menu/HandledItem"/>
+      <eClassifiers xsi:type="ecore:EClass" name="DirectToolItem" eSuperTypes="#//ui/menu/ToolItem #//Contribution"/>
+      <eClassifiers xsi:type="ecore:EClass" name="ToolBarSeparator" eSuperTypes="#//ui/menu/ToolBarElement"/>
+      <eClassifiers xsi:type="ecore:EClass" name="MenuContributions" abstract="true"
+          interface="true">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="menuContributions"
+            upperBound="-1" eType="#//ui/menu/MenuContribution" containment="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="RenderedMenu" eSuperTypes="#//ui/menu/Menu">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributionManager"
+            eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
+            transient="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="RenderedToolBar" eSuperTypes="#//ui/menu/ToolBar">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributionManager"
+            eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
+            transient="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="ToolBarContribution">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="parentId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="positionInParent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">
+          <eTypeArguments eClassifier="#//ui/menu/ToolBarElement"/>
+        </eGenericSuperTypes>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="ToolBarContributions" abstract="true"
+          interface="true">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="toolBarContributions"
+            upperBound="-1" eType="#//ui/menu/ToolBarContribution" containment="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="TrimContribution">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="parentId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="positionInParent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">
+          <eTypeArguments eClassifier="#//ui/basic/TrimElement"/>
+        </eGenericSuperTypes>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="TrimContributions" abstract="true"
+          interface="true">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="trimContributions"
+            upperBound="-1" eType="#//ui/menu/TrimContribution" containment="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="RenderedMenuItem" eSuperTypes="#//ui/menu/MenuItem">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributionItem" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
+            transient="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="OpaqueToolItem" eSuperTypes="#//ui/menu/ToolItem">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="opaqueItem" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
+            transient="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="OpaqueMenuItem" eSuperTypes="#//ui/menu/MenuItem">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="opaqueItem" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
+            transient="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="OpaqueMenuSeparator" eSuperTypes="#//ui/menu/MenuSeparator">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="opaqueItem" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
+            transient="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="OpaqueMenu" eSuperTypes="#//ui/menu/Menu"/>
+    </eSubpackages>
+    <eSubpackages name="basic" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic"
+        nsPrefix="basic">
+      <eClassifiers xsi:type="ecore:EClass" name="Part" eSuperTypes="#//ui/UIElement #//ui/basic/PartSashContainerElement #//ui/basic/StackElement #//Contribution #//ui/Context #//ui/UILabel #//commands/HandlerContainer #//ui/Dirtyable #//commands/Bindings #//ui/basic/WindowElement">
+        <eOperations name="getLocalizedDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="menus" upperBound="-1"
+            eType="#//ui/menu/Menu" containment="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="toolbar" eType="#//ui/menu/ToolBar"
+            containment="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="closeable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+            defaultValueLiteral="false"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="InputPart" eSuperTypes="#//ui/basic/Part #//ui/Input"/>
+      <eClassifiers xsi:type="ecore:EClass" name="PartStack">
+        <eGenericSuperTypes eClassifier="#//ui/GenericStack">
+          <eTypeArguments eClassifier="#//ui/basic/StackElement"/>
+        </eGenericSuperTypes>
+        <eGenericSuperTypes eClassifier="#//ui/basic/PartSashContainerElement"/>
+        <eGenericSuperTypes eClassifier="#//ui/basic/WindowElement"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="PartSashContainer">
+        <eGenericSuperTypes eClassifier="#//ui/GenericTile">
+          <eTypeArguments eClassifier="#//ui/basic/PartSashContainerElement"/>
+        </eGenericSuperTypes>
+        <eGenericSuperTypes eClassifier="#//ui/basic/PartSashContainerElement"/>
+        <eGenericSuperTypes eClassifier="#//ui/basic/WindowElement"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="Window">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="mainMenu" eType="#//ui/menu/Menu"
+            containment="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+            defaultValueLiteral="-2147483648"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="y" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+            defaultValueLiteral="-2147483648"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="width" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+            defaultValueLiteral="-1"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+            defaultValueLiteral="-1"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="windows" upperBound="-1"
+            eType="#//ui/basic/Window" containment="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="sharedElements" upperBound="-1"
+            eType="#//ui/UIElement" containment="true"/>
+        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">
+          <eTypeArguments eClassifier="#//ui/basic/WindowElement"/>
+        </eGenericSuperTypes>
+        <eGenericSuperTypes eClassifier="#//ui/UILabel"/>
+        <eGenericSuperTypes eClassifier="#//ui/Context"/>
+        <eGenericSuperTypes eClassifier="#//commands/HandlerContainer"/>
+        <eGenericSuperTypes eClassifier="#//commands/Bindings"/>
+        <eGenericSuperTypes eClassifier="#//ui/SnippetContainer"/>
+        <eGenericSuperTypes eClassifier="#//ui/LifecycledElement"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="TrimmedWindow" eSuperTypes="#//ui/basic/Window">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="trimBars" upperBound="-1"
+            eType="#//ui/basic/TrimBar" containment="true"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="TrimElement" abstract="true" eSuperTypes="#//ui/UIElement"/>
+      <eClassifiers xsi:type="ecore:EClass" name="PartSashContainerElement" abstract="true"
+          interface="true" eSuperTypes="#//ui/UIElement"/>
+      <eClassifiers xsi:type="ecore:EClass" name="WindowElement" abstract="true" interface="true"
+          eSuperTypes="#//ui/UIElement"/>
+      <eClassifiers xsi:type="ecore:EClass" name="TrimBar">
+        <eGenericSuperTypes eClassifier="#//ui/GenericTrimContainer">
+          <eTypeArguments eClassifier="#//ui/basic/TrimElement"/>
+        </eGenericSuperTypes>
+        <eGenericSuperTypes eClassifier="#//ui/UIElement"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="StackElement" abstract="true" interface="true"
+          eSuperTypes="#//ui/UIElement"/>
+    </eSubpackages>
+    <eSubpackages name="advanced" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced"
+        nsPrefix="advanced">
+      <eClassifiers xsi:type="ecore:EClass" name="Placeholder" eSuperTypes="#//ui/UIElement #//ui/basic/PartSashContainerElement #//ui/basic/StackElement">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="ref" lowerBound="1"
+            eType="#//ui/UIElement"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="closeable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+            defaultValueLiteral="false"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="Perspective">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="windows" upperBound="-1"
+            eType="#//ui/basic/Window" containment="true"/>
+        <eGenericSuperTypes eClassifier="#//ui/ElementContainer">
+          <eTypeArguments eClassifier="#//ui/basic/PartSashContainerElement"/>
+        </eGenericSuperTypes>
+        <eGenericSuperTypes eClassifier="#//ui/UILabel"/>
+        <eGenericSuperTypes eClassifier="#//ui/Context"/>
+        <eGenericSuperTypes eClassifier="#//ui/LifecycledElement"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="PerspectiveStack">
+        <eGenericSuperTypes eClassifier="#//ui/UIElement"/>
+        <eGenericSuperTypes eClassifier="#//ui/GenericStack">
+          <eTypeArguments eClassifier="#//ui/advanced/Perspective"/>
+        </eGenericSuperTypes>
+        <eGenericSuperTypes eClassifier="#//ui/basic/PartSashContainerElement"/>
+        <eGenericSuperTypes eClassifier="#//ui/basic/WindowElement"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="Area" eSuperTypes="#//ui/basic/PartSashContainer #//ui/UILabel"/>
+    </eSubpackages>
+  </eSubpackages>
+  <eSubpackages name="descriptor" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/descriptor"
+      nsPrefix="descriptor">
+    <eSubpackages name="basic" nsURI="http://www.eclipse.org/ui/2010/UIModel/application/descriptor/basic"
+        nsPrefix="basic">
+      <eClassifiers xsi:type="ecore:EClass" name="PartDescriptor" eSuperTypes="#//ApplicationElement #//ui/UILabel #//commands/HandlerContainer #//commands/Bindings">
+        <eOperations name="getLocalizedDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="allowMultiple" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="menus" upperBound="-1"
+            eType="#//ui/menu/Menu" containment="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="toolbar" eType="#//ui/menu/ToolBar"
+            containment="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="closeable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+            defaultValueLiteral="false"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="dirtyable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributionURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </eClassifiers>
+      <eClassifiers xsi:type="ecore:EClass" name="PartDescriptorContainer" abstract="true"
+          interface="true">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="descriptors" upperBound="-1"
+            eType="#//descriptor/basic/PartDescriptor" containment="true"/>
+      </eClassifiers>
+    </eSubpackages>
+  </eSubpackages>
+</ecore:EPackage>
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplication.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplication.java
index 7ce48cb..d9e7f91 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplication.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplication.java
@@ -19,6 +19,7 @@
 import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer;
 import org.eclipse.e4.ui.model.application.ui.MContext;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
 import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
 import org.eclipse.e4.ui.model.application.ui.menu.MMenuContributions;
@@ -42,7 +43,7 @@
  * @model
  * @generated
  */
-public interface MApplication extends MElementContainer<MWindow>, MContext, MHandlerContainer, MBindingTableContainer, MPartDescriptorContainer, MBindings, MMenuContributions, MToolBarContributions, MTrimContributions, MSnippetContainer {
+public interface MApplication extends MElementContainer<MWindow>, MContext, MHandlerContainer, MBindingTableContainer, MPartDescriptorContainer, MBindings, MMenuContributions, MToolBarContributions, MTrimContributions, MSnippetContainer, MLifecycledElement {
 	/**
 	 * Returns the value of the '<em><b>Commands</b></em>' containment reference list.
 	 * The list contents are of type {@link org.eclipse.e4.ui.model.application.commands.MCommand}.
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/impl/CommandsFactoryImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/impl/CommandsFactoryImpl.java
index 11e3b0a..b0c03c0 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/impl/CommandsFactoryImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/impl/CommandsFactoryImpl.java
@@ -10,6 +10,7 @@
  */
 package org.eclipse.e4.ui.model.application.commands.impl;
 
+import org.eclipse.e4.ui.model.application.commands.*;
 import org.eclipse.e4.ui.model.application.commands.MBindingContext;
 import org.eclipse.e4.ui.model.application.commands.MBindingTable;
 import org.eclipse.e4.ui.model.application.commands.MCategory;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/util/CommandsAdapterFactory.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/util/CommandsAdapterFactory.java
index c832074..6ad0af6 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/util/CommandsAdapterFactory.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/util/CommandsAdapterFactory.java
@@ -12,6 +12,7 @@
 
 import org.eclipse.e4.ui.model.application.MApplicationElement;
 import org.eclipse.e4.ui.model.application.MContribution;
+import org.eclipse.e4.ui.model.application.commands.*;
 import org.eclipse.e4.ui.model.application.commands.MBindingContext;
 import org.eclipse.e4.ui.model.application.commands.MBindingTable;
 import org.eclipse.e4.ui.model.application.commands.MBindingTableContainer;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/util/CommandsSwitch.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/util/CommandsSwitch.java
index f44f5fb..7538aaf 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/util/CommandsSwitch.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/commands/util/CommandsSwitch.java
@@ -12,6 +12,7 @@
 
 import org.eclipse.e4.ui.model.application.MApplicationElement;
 import org.eclipse.e4.ui.model.application.MContribution;
+import org.eclipse.e4.ui.model.application.commands.*;
 import org.eclipse.e4.ui.model.application.commands.MBindingContext;
 import org.eclipse.e4.ui.model.application.commands.MBindingTable;
 import org.eclipse.e4.ui.model.application.commands.MBindingTableContainer;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/impl/BasicFactoryImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/impl/BasicFactoryImpl.java
index 8374a8a..3579e98 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/impl/BasicFactoryImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/impl/BasicFactoryImpl.java
@@ -10,6 +10,7 @@
  */
 package org.eclipse.e4.ui.model.application.descriptor.basic.impl;
 
+import org.eclipse.e4.ui.model.application.descriptor.basic.*;
 import org.eclipse.e4.ui.model.application.descriptor.basic.MBasicFactory;
 import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
 import org.eclipse.emf.ecore.EClass;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/util/BasicAdapterFactory.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/util/BasicAdapterFactory.java
index 159fce8..d6aaa1f 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/util/BasicAdapterFactory.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/util/BasicAdapterFactory.java
@@ -13,6 +13,7 @@
 import org.eclipse.e4.ui.model.application.MApplicationElement;
 import org.eclipse.e4.ui.model.application.commands.MBindings;
 import org.eclipse.e4.ui.model.application.commands.MHandlerContainer;
+import org.eclipse.e4.ui.model.application.descriptor.basic.*;
 import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
 import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer;
 import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/util/BasicSwitch.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/util/BasicSwitch.java
index f223ff7..d0ce648 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/util/BasicSwitch.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/descriptor/basic/util/BasicSwitch.java
@@ -13,6 +13,7 @@
 import org.eclipse.e4.ui.model.application.MApplicationElement;
 import org.eclipse.e4.ui.model.application.commands.MBindings;
 import org.eclipse.e4.ui.model.application.commands.MHandlerContainer;
+import org.eclipse.e4.ui.model.application.descriptor.basic.*;
 import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
 import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer;
 import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationFactoryImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationFactoryImpl.java
index d41b015..3d3de47 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationFactoryImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationFactoryImpl.java
@@ -11,6 +11,7 @@
 package org.eclipse.e4.ui.model.application.impl;
 
 import java.util.Map;
+import org.eclipse.e4.ui.model.application.*;
 import org.eclipse.e4.ui.model.application.MAddon;
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.MApplicationFactory;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationImpl.java
index 2921352..88b068e 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationImpl.java
@@ -29,6 +29,7 @@
 import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer;
 import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
 import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
@@ -74,6 +75,7 @@
  *   <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getToolBarContributions <em>Tool Bar Contributions</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getTrimContributions <em>Trim Contributions</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getSnippets <em>Snippets</em>}</li>
+ *   <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getLifecyleURIs <em>Lifecyle UR Is</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getCommands <em>Commands</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getAddons <em>Addons</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getCategories <em>Categories</em>}</li>
@@ -214,6 +216,16 @@
 	protected EList<MUIElement> snippets;
 
 	/**
+	 * The cached value of the '{@link #getLifecyleURIs() <em>Lifecyle UR Is</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLifecyleURIs()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<String> lifecyleURIs;
+
+	/**
 	 * The cached value of the '{@link #getCommands() <em>Commands</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -420,6 +432,18 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public List<String> getLifecyleURIs() {
+		if (lifecyleURIs == null) {
+			lifecyleURIs = new EDataTypeUniqueEList<String>(String.class, this, ApplicationPackageImpl.APPLICATION__LIFECYLE_UR_IS);
+		}
+		return lifecyleURIs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public List<MCommand> getCommands() {
 		if (commands == null) {
 			commands = new EObjectContainmentEList<MCommand>(MCommand.class, this, ApplicationPackageImpl.APPLICATION__COMMANDS);
@@ -520,6 +544,8 @@
 				return getTrimContributions();
 			case ApplicationPackageImpl.APPLICATION__SNIPPETS:
 				return getSnippets();
+			case ApplicationPackageImpl.APPLICATION__LIFECYLE_UR_IS:
+				return getLifecyleURIs();
 			case ApplicationPackageImpl.APPLICATION__COMMANDS:
 				return getCommands();
 			case ApplicationPackageImpl.APPLICATION__ADDONS:
@@ -585,6 +611,10 @@
 				getSnippets().clear();
 				getSnippets().addAll((Collection<? extends MUIElement>)newValue);
 				return;
+			case ApplicationPackageImpl.APPLICATION__LIFECYLE_UR_IS:
+				getLifecyleURIs().clear();
+				getLifecyleURIs().addAll((Collection<? extends String>)newValue);
+				return;
 			case ApplicationPackageImpl.APPLICATION__COMMANDS:
 				getCommands().clear();
 				getCommands().addAll((Collection<? extends MCommand>)newValue);
@@ -645,6 +675,9 @@
 			case ApplicationPackageImpl.APPLICATION__SNIPPETS:
 				getSnippets().clear();
 				return;
+			case ApplicationPackageImpl.APPLICATION__LIFECYLE_UR_IS:
+				getLifecyleURIs().clear();
+				return;
 			case ApplicationPackageImpl.APPLICATION__COMMANDS:
 				getCommands().clear();
 				return;
@@ -690,6 +723,8 @@
 				return trimContributions != null && !trimContributions.isEmpty();
 			case ApplicationPackageImpl.APPLICATION__SNIPPETS:
 				return snippets != null && !snippets.isEmpty();
+			case ApplicationPackageImpl.APPLICATION__LIFECYLE_UR_IS:
+				return lifecyleURIs != null && !lifecyleURIs.isEmpty();
 			case ApplicationPackageImpl.APPLICATION__COMMANDS:
 				return commands != null && !commands.isEmpty();
 			case ApplicationPackageImpl.APPLICATION__ADDONS:
@@ -764,6 +799,12 @@
 				default: return -1;
 			}
 		}
+		if (baseClass == MLifecycledElement.class) {
+			switch (derivedFeatureID) {
+				case ApplicationPackageImpl.APPLICATION__LIFECYLE_UR_IS: return UiPackageImpl.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS;
+				default: return -1;
+			}
+		}
 		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
 	}
 
@@ -831,6 +872,12 @@
 				default: return -1;
 			}
 		}
+		if (baseClass == MLifecycledElement.class) {
+			switch (baseFeatureID) {
+				case UiPackageImpl.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS: return ApplicationPackageImpl.APPLICATION__LIFECYLE_UR_IS;
+				default: return -1;
+			}
+		}
 		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
 	}
 
@@ -848,6 +895,8 @@
 		result.append(context);
 		result.append(", variables: "); //$NON-NLS-1$
 		result.append(variables);
+		result.append(", lifecyleURIs: "); //$NON-NLS-1$
+		result.append(lifecyleURIs);
 		result.append(')');
 		return result.toString();
 	}
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationPackageImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationPackageImpl.java
index 96cae1e..13e691a 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationPackageImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationPackageImpl.java
@@ -470,13 +470,22 @@
 	public static final int APPLICATION__SNIPPETS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 11;
 
 	/**
+	 * The feature id for the '<em><b>Lifecyle UR Is</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int APPLICATION__LIFECYLE_UR_IS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 12;
+
+	/**
 	 * The feature id for the '<em><b>Commands</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	public static final int APPLICATION__COMMANDS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 12;
+	public static final int APPLICATION__COMMANDS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 13;
 
 	/**
 	 * The feature id for the '<em><b>Addons</b></em>' containment reference list.
@@ -485,7 +494,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int APPLICATION__ADDONS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 13;
+	public static final int APPLICATION__ADDONS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 14;
 
 	/**
 	 * The feature id for the '<em><b>Categories</b></em>' containment reference list.
@@ -494,7 +503,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int APPLICATION__CATEGORIES = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 14;
+	public static final int APPLICATION__CATEGORIES = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 15;
 
 	/**
 	 * The number of structural features of the '<em>Application</em>' class.
@@ -503,7 +512,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int APPLICATION_FEATURE_COUNT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 15;
+	public static final int APPLICATION_FEATURE_COUNT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 16;
 
 	/**
 	 * The operation id for the '<em>Get Localized Accessibility Phrase</em>' operation.
@@ -1292,6 +1301,8 @@
 		applicationEClass.getEGenericSuperTypes().add(g1);
 		g1 = createEGenericType(theUiPackage.getSnippetContainer());
 		applicationEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(theUiPackage.getLifecycledElement());
+		applicationEClass.getEGenericSuperTypes().add(g1);
 		contributionEClass.getESuperTypes().add(this.getApplicationElement());
 		addonEClass.getESuperTypes().add(this.getContribution());
 
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/MLifecycledElement.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/MLifecycledElement.java
new file mode 100644
index 0000000..e167b64
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/MLifecycledElement.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2008, 2012 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Lifecycled Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.e4.ui.model.application.ui.MLifecycledElement#getLifecyleURIs <em>Lifecyle UR Is</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface MLifecycledElement extends MUIElement {
+	/**
+	 * Returns the value of the '<em><b>Lifecyle UR Is</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.String}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Lifecyle UR Is</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Lifecyle UR Is</em>' attribute list.
+	 * @model
+	 * @generated
+	 */
+	List<String> getLifecyleURIs();
+
+} // MLifecycledElement
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/MPerspective.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/MPerspective.java
index a36e304..3a62373 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/MPerspective.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/MPerspective.java
@@ -13,6 +13,7 @@
 import java.util.List;
 import org.eclipse.e4.ui.model.application.ui.MContext;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MUILabel;
 import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
 import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
@@ -32,7 +33,7 @@
  * @model
  * @generated
  */
-public interface MPerspective extends MElementContainer<MPartSashContainerElement>, MUILabel, MContext {
+public interface MPerspective extends MElementContainer<MPartSashContainerElement>, MUILabel, MContext, MLifecycledElement {
 	/**
 	 * Returns the value of the '<em><b>Windows</b></em>' containment reference list.
 	 * The list contents are of type {@link org.eclipse.e4.ui.model.application.ui.basic.MWindow}.
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/AdvancedFactoryImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/AdvancedFactoryImpl.java
index ff56b72..5d70d48 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/AdvancedFactoryImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/AdvancedFactoryImpl.java
@@ -10,6 +10,7 @@
  */
 package org.eclipse.e4.ui.model.application.ui.advanced.impl;
 
+import org.eclipse.e4.ui.model.application.ui.advanced.*;
 import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
 import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
 import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/AdvancedPackageImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/AdvancedPackageImpl.java
index c6f42b9..91e1afc 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/AdvancedPackageImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/AdvancedPackageImpl.java
@@ -484,13 +484,22 @@
 	public static final int PERSPECTIVE__PROPERTIES = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 5;
 
 	/**
+	 * The feature id for the '<em><b>Lifecyle UR Is</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PERSPECTIVE__LIFECYLE_UR_IS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 6;
+
+	/**
 	 * The feature id for the '<em><b>Windows</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	public static final int PERSPECTIVE__WINDOWS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 6;
+	public static final int PERSPECTIVE__WINDOWS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 7;
 
 	/**
 	 * The number of structural features of the '<em>Perspective</em>' class.
@@ -499,7 +508,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int PERSPECTIVE_FEATURE_COUNT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 7;
+	public static final int PERSPECTIVE_FEATURE_COUNT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 8;
 
 	/**
 	 * The operation id for the '<em>Get Localized Accessibility Phrase</em>' operation.
@@ -1254,6 +1263,8 @@
 		perspectiveEClass.getEGenericSuperTypes().add(g1);
 		g1 = createEGenericType(theUiPackage.getContext());
 		perspectiveEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(theUiPackage.getLifecycledElement());
+		perspectiveEClass.getEGenericSuperTypes().add(g1);
 		g1 = createEGenericType(theUiPackage.getUIElement());
 		perspectiveStackEClass.getEGenericSuperTypes().add(g1);
 		g1 = createEGenericType(theUiPackage.getGenericStack());
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/PerspectiveImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/PerspectiveImpl.java
index a1af521..ea98d5b 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/PerspectiveImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/impl/PerspectiveImpl.java
@@ -19,6 +19,7 @@
 import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.e4.ui.model.application.impl.StringToStringMapImpl;
 import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MUILabel;
 import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
 import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
@@ -51,6 +52,7 @@
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.advanced.impl.PerspectiveImpl#getContext <em>Context</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.advanced.impl.PerspectiveImpl#getVariables <em>Variables</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.advanced.impl.PerspectiveImpl#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.e4.ui.model.application.ui.advanced.impl.PerspectiveImpl#getLifecyleURIs <em>Lifecyle UR Is</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.advanced.impl.PerspectiveImpl#getWindows <em>Windows</em>}</li>
  * </ul>
  * </p>
@@ -159,6 +161,16 @@
 	protected EMap<String, String> properties;
 
 	/**
+	 * The cached value of the '{@link #getLifecyleURIs() <em>Lifecyle UR Is</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLifecyleURIs()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<String> lifecyleURIs;
+
+	/**
 	 * The cached value of the '{@link #getWindows() <em>Windows</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -300,6 +312,18 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public List<String> getLifecyleURIs() {
+		if (lifecyleURIs == null) {
+			lifecyleURIs = new EDataTypeUniqueEList<String>(String.class, this, AdvancedPackageImpl.PERSPECTIVE__LIFECYLE_UR_IS);
+		}
+		return lifecyleURIs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public List<MWindow> getWindows() {
 		if (windows == null) {
 			windows = new EObjectContainmentEList<MWindow>(MWindow.class, this, AdvancedPackageImpl.PERSPECTIVE__WINDOWS);
@@ -360,6 +384,8 @@
 			case AdvancedPackageImpl.PERSPECTIVE__PROPERTIES:
 				if (coreType) return ((EMap.InternalMapView<String, String>)getProperties()).eMap();
 				else return getProperties();
+			case AdvancedPackageImpl.PERSPECTIVE__LIFECYLE_UR_IS:
+				return getLifecyleURIs();
 			case AdvancedPackageImpl.PERSPECTIVE__WINDOWS:
 				return getWindows();
 		}
@@ -394,6 +420,10 @@
 			case AdvancedPackageImpl.PERSPECTIVE__PROPERTIES:
 				((EStructuralFeature.Setting)((EMap.InternalMapView<String, String>)getProperties()).eMap()).set(newValue);
 				return;
+			case AdvancedPackageImpl.PERSPECTIVE__LIFECYLE_UR_IS:
+				getLifecyleURIs().clear();
+				getLifecyleURIs().addAll((Collection<? extends String>)newValue);
+				return;
 			case AdvancedPackageImpl.PERSPECTIVE__WINDOWS:
 				getWindows().clear();
 				getWindows().addAll((Collection<? extends MWindow>)newValue);
@@ -428,6 +458,9 @@
 			case AdvancedPackageImpl.PERSPECTIVE__PROPERTIES:
 				getProperties().clear();
 				return;
+			case AdvancedPackageImpl.PERSPECTIVE__LIFECYLE_UR_IS:
+				getLifecyleURIs().clear();
+				return;
 			case AdvancedPackageImpl.PERSPECTIVE__WINDOWS:
 				getWindows().clear();
 				return;
@@ -455,6 +488,8 @@
 				return variables != null && !variables.isEmpty();
 			case AdvancedPackageImpl.PERSPECTIVE__PROPERTIES:
 				return properties != null && !properties.isEmpty();
+			case AdvancedPackageImpl.PERSPECTIVE__LIFECYLE_UR_IS:
+				return lifecyleURIs != null && !lifecyleURIs.isEmpty();
 			case AdvancedPackageImpl.PERSPECTIVE__WINDOWS:
 				return windows != null && !windows.isEmpty();
 		}
@@ -484,6 +519,12 @@
 				default: return -1;
 			}
 		}
+		if (baseClass == MLifecycledElement.class) {
+			switch (derivedFeatureID) {
+				case AdvancedPackageImpl.PERSPECTIVE__LIFECYLE_UR_IS: return UiPackageImpl.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS;
+				default: return -1;
+			}
+		}
 		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
 	}
 
@@ -510,6 +551,12 @@
 				default: return -1;
 			}
 		}
+		if (baseClass == MLifecycledElement.class) {
+			switch (baseFeatureID) {
+				case UiPackageImpl.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS: return AdvancedPackageImpl.PERSPECTIVE__LIFECYLE_UR_IS;
+				default: return -1;
+			}
+		}
 		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
 	}
 
@@ -532,6 +579,11 @@
 				default: return -1;
 			}
 		}
+		if (baseClass == MLifecycledElement.class) {
+			switch (baseOperationID) {
+				default: return -1;
+			}
+		}
 		return super.eDerivedOperationID(baseOperationID, baseClass);
 	}
 
@@ -571,6 +623,8 @@
 		result.append(context);
 		result.append(", variables: "); //$NON-NLS-1$
 		result.append(variables);
+		result.append(", lifecyleURIs: "); //$NON-NLS-1$
+		result.append(lifecyleURIs);
 		result.append(')');
 		return result.toString();
 	}
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/util/AdvancedAdapterFactory.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/util/AdvancedAdapterFactory.java
index 864e573..235b514 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/util/AdvancedAdapterFactory.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/util/AdvancedAdapterFactory.java
@@ -15,8 +15,10 @@
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
 import org.eclipse.e4.ui.model.application.ui.MGenericStack;
 import org.eclipse.e4.ui.model.application.ui.MGenericTile;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.advanced.*;
 import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
 import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
 import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
@@ -132,6 +134,10 @@
 				return createContextAdapter();
 			}
 			@Override
+			public Adapter caseLifecycledElement(MLifecycledElement object) {
+				return createLifecycledElementAdapter();
+			}
+			@Override
 			public <T extends MUIElement> Adapter caseGenericStack(MGenericStack<T> object) {
 				return createGenericStackAdapter();
 			}
@@ -322,6 +328,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.ui.MLifecycledElement <em>Lifecycled Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MLifecycledElement
+	 * @generated
+	 */
+	public Adapter createLifecycledElementAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.ui.MGenericStack <em>Generic Stack</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/util/AdvancedSwitch.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/util/AdvancedSwitch.java
index 954e649..b7bcd6a 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/util/AdvancedSwitch.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/advanced/util/AdvancedSwitch.java
@@ -15,8 +15,10 @@
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
 import org.eclipse.e4.ui.model.application.ui.MGenericStack;
 import org.eclipse.e4.ui.model.application.ui.MGenericTile;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.advanced.*;
 import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
 import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
 import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
@@ -103,6 +105,7 @@
 				if (result == null) result = caseElementContainer(perspective);
 				if (result == null) result = caseUILabel(perspective);
 				if (result == null) result = caseContext(perspective);
+				if (result == null) result = caseLifecycledElement(perspective);
 				if (result == null) result = caseUIElement(perspective);
 				if (result == null) result = caseApplicationElement(perspective);
 				if (result == null) result = defaultCase(theEObject);
@@ -304,6 +307,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Lifecycled Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Lifecycled Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLifecycledElement(MLifecycledElement object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Generic Stack</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/MWindow.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/MWindow.java
index de44054..de05cd5 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/MWindow.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/MWindow.java
@@ -15,6 +15,7 @@
 import org.eclipse.e4.ui.model.application.commands.MHandlerContainer;
 import org.eclipse.e4.ui.model.application.ui.MContext;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.MUILabel;
@@ -41,7 +42,7 @@
  * @model
  * @generated
  */
-public interface MWindow extends MElementContainer<MWindowElement>, MUILabel, MContext, MHandlerContainer, MBindings, MSnippetContainer {
+public interface MWindow extends MElementContainer<MWindowElement>, MUILabel, MContext, MHandlerContainer, MBindings, MSnippetContainer, MLifecycledElement {
 	/**
 	 * Returns the value of the '<em><b>Main Menu</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/BasicFactoryImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/BasicFactoryImpl.java
index 4190634..68ac102 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/BasicFactoryImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/BasicFactoryImpl.java
@@ -10,6 +10,7 @@
  */
 package org.eclipse.e4.ui.model.application.ui.basic.impl;
 
+import org.eclipse.e4.ui.model.application.ui.basic.*;
 import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
 import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/BasicPackageImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/BasicPackageImpl.java
index 8a4e6c7..454444d 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/BasicPackageImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/BasicPackageImpl.java
@@ -1455,13 +1455,22 @@
 	public static final int WINDOW__SNIPPETS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 8;
 
 	/**
+	 * The feature id for the '<em><b>Lifecyle UR Is</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WINDOW__LIFECYLE_UR_IS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 9;
+
+	/**
 	 * The feature id for the '<em><b>Main Menu</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	public static final int WINDOW__MAIN_MENU = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 9;
+	public static final int WINDOW__MAIN_MENU = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 10;
 
 	/**
 	 * The feature id for the '<em><b>X</b></em>' attribute.
@@ -1470,7 +1479,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int WINDOW__X = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 10;
+	public static final int WINDOW__X = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 11;
 
 	/**
 	 * The feature id for the '<em><b>Y</b></em>' attribute.
@@ -1479,7 +1488,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int WINDOW__Y = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 11;
+	public static final int WINDOW__Y = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 12;
 
 	/**
 	 * The feature id for the '<em><b>Width</b></em>' attribute.
@@ -1488,7 +1497,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int WINDOW__WIDTH = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 12;
+	public static final int WINDOW__WIDTH = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 13;
 
 	/**
 	 * The feature id for the '<em><b>Height</b></em>' attribute.
@@ -1497,7 +1506,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int WINDOW__HEIGHT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 13;
+	public static final int WINDOW__HEIGHT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 14;
 
 	/**
 	 * The feature id for the '<em><b>Windows</b></em>' containment reference list.
@@ -1506,7 +1515,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int WINDOW__WINDOWS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 14;
+	public static final int WINDOW__WINDOWS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 15;
 
 	/**
 	 * The feature id for the '<em><b>Shared Elements</b></em>' containment reference list.
@@ -1515,7 +1524,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int WINDOW__SHARED_ELEMENTS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 15;
+	public static final int WINDOW__SHARED_ELEMENTS = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 16;
 
 	/**
 	 * The number of structural features of the '<em>Window</em>' class.
@@ -1524,7 +1533,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int WINDOW_FEATURE_COUNT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 16;
+	public static final int WINDOW_FEATURE_COUNT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 17;
 
 	/**
 	 * The operation id for the '<em>Get Localized Accessibility Phrase</em>' operation.
@@ -1797,6 +1806,15 @@
 	public static final int TRIMMED_WINDOW__SNIPPETS = WINDOW__SNIPPETS;
 
 	/**
+	 * The feature id for the '<em><b>Lifecyle UR Is</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TRIMMED_WINDOW__LIFECYLE_UR_IS = WINDOW__LIFECYLE_UR_IS;
+
+	/**
 	 * The feature id for the '<em><b>Main Menu</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -3355,6 +3373,8 @@
 		windowEClass.getEGenericSuperTypes().add(g1);
 		g1 = createEGenericType(theUiPackage.getSnippetContainer());
 		windowEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(theUiPackage.getLifecycledElement());
+		windowEClass.getEGenericSuperTypes().add(g1);
 		trimmedWindowEClass.getESuperTypes().add(this.getWindow());
 		trimElementEClass.getESuperTypes().add(theUiPackage.getUIElement());
 		partSashContainerElementEClass.getESuperTypes().add(theUiPackage.getUIElement());
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/WindowImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/WindowImpl.java
index 5c2203b..eaccd7d 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/WindowImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/impl/WindowImpl.java
@@ -24,6 +24,7 @@
 import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.e4.ui.model.application.impl.StringToStringMapImpl;
 import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.MUILabel;
@@ -62,6 +63,7 @@
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.basic.impl.WindowImpl#getHandlers <em>Handlers</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.basic.impl.WindowImpl#getBindingContexts <em>Binding Contexts</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.basic.impl.WindowImpl#getSnippets <em>Snippets</em>}</li>
+ *   <li>{@link org.eclipse.e4.ui.model.application.ui.basic.impl.WindowImpl#getLifecyleURIs <em>Lifecyle UR Is</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.basic.impl.WindowImpl#getMainMenu <em>Main Menu</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.basic.impl.WindowImpl#getX <em>X</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.basic.impl.WindowImpl#getY <em>Y</em>}</li>
@@ -206,6 +208,16 @@
 	protected EList<MUIElement> snippets;
 
 	/**
+	 * The cached value of the '{@link #getLifecyleURIs() <em>Lifecyle UR Is</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLifecyleURIs()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<String> lifecyleURIs;
+
+	/**
 	 * The cached value of the '{@link #getMainMenu() <em>Main Menu</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -483,6 +495,18 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public List<String> getLifecyleURIs() {
+		if (lifecyleURIs == null) {
+			lifecyleURIs = new EDataTypeUniqueEList<String>(String.class, this, BasicPackageImpl.WINDOW__LIFECYLE_UR_IS);
+		}
+		return lifecyleURIs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public MMenu getMainMenu() {
 		return mainMenu;
 	}
@@ -696,6 +720,8 @@
 				return getBindingContexts();
 			case BasicPackageImpl.WINDOW__SNIPPETS:
 				return getSnippets();
+			case BasicPackageImpl.WINDOW__LIFECYLE_UR_IS:
+				return getLifecyleURIs();
 			case BasicPackageImpl.WINDOW__MAIN_MENU:
 				return getMainMenu();
 			case BasicPackageImpl.WINDOW__X:
@@ -754,6 +780,10 @@
 				getSnippets().clear();
 				getSnippets().addAll((Collection<? extends MUIElement>)newValue);
 				return;
+			case BasicPackageImpl.WINDOW__LIFECYLE_UR_IS:
+				getLifecyleURIs().clear();
+				getLifecyleURIs().addAll((Collection<? extends String>)newValue);
+				return;
 			case BasicPackageImpl.WINDOW__MAIN_MENU:
 				setMainMenu((MMenu)newValue);
 				return;
@@ -816,6 +846,9 @@
 			case BasicPackageImpl.WINDOW__SNIPPETS:
 				getSnippets().clear();
 				return;
+			case BasicPackageImpl.WINDOW__LIFECYLE_UR_IS:
+				getLifecyleURIs().clear();
+				return;
 			case BasicPackageImpl.WINDOW__MAIN_MENU:
 				setMainMenu((MMenu)null);
 				return;
@@ -867,6 +900,8 @@
 				return bindingContexts != null && !bindingContexts.isEmpty();
 			case BasicPackageImpl.WINDOW__SNIPPETS:
 				return snippets != null && !snippets.isEmpty();
+			case BasicPackageImpl.WINDOW__LIFECYLE_UR_IS:
+				return lifecyleURIs != null && !lifecyleURIs.isEmpty();
 			case BasicPackageImpl.WINDOW__MAIN_MENU:
 				return mainMenu != null;
 			case BasicPackageImpl.WINDOW__X:
@@ -926,6 +961,12 @@
 				default: return -1;
 			}
 		}
+		if (baseClass == MLifecycledElement.class) {
+			switch (derivedFeatureID) {
+				case BasicPackageImpl.WINDOW__LIFECYLE_UR_IS: return UiPackageImpl.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS;
+				default: return -1;
+			}
+		}
 		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
 	}
 
@@ -970,6 +1011,12 @@
 				default: return -1;
 			}
 		}
+		if (baseClass == MLifecycledElement.class) {
+			switch (baseFeatureID) {
+				case UiPackageImpl.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS: return BasicPackageImpl.WINDOW__LIFECYLE_UR_IS;
+				default: return -1;
+			}
+		}
 		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
 	}
 
@@ -1007,6 +1054,11 @@
 				default: return -1;
 			}
 		}
+		if (baseClass == MLifecycledElement.class) {
+			switch (baseOperationID) {
+				default: return -1;
+			}
+		}
 		return super.eDerivedOperationID(baseOperationID, baseClass);
 	}
 
@@ -1046,6 +1098,8 @@
 		result.append(context);
 		result.append(", variables: "); //$NON-NLS-1$
 		result.append(variables);
+		result.append(", lifecyleURIs: "); //$NON-NLS-1$
+		result.append(lifecyleURIs);
 		result.append(", x: "); //$NON-NLS-1$
 		result.append(x);
 		result.append(", y: "); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/util/BasicAdapterFactory.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/util/BasicAdapterFactory.java
index b4561ac..d2ea163 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/util/BasicAdapterFactory.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/util/BasicAdapterFactory.java
@@ -21,9 +21,11 @@
 import org.eclipse.e4.ui.model.application.ui.MGenericTile;
 import org.eclipse.e4.ui.model.application.ui.MGenericTrimContainer;
 import org.eclipse.e4.ui.model.application.ui.MInput;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.basic.*;
 import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
@@ -194,6 +196,10 @@
 				return createSnippetContainerAdapter();
 			}
 			@Override
+			public Adapter caseLifecycledElement(MLifecycledElement object) {
+				return createLifecycledElementAdapter();
+			}
+			@Override
 			public <T extends MUIElement> Adapter caseGenericTrimContainer(MGenericTrimContainer<T> object) {
 				return createGenericTrimContainerAdapter();
 			}
@@ -554,6 +560,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.ui.MLifecycledElement <em>Lifecycled Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MLifecycledElement
+	 * @generated
+	 */
+	public Adapter createLifecycledElementAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.ui.MGenericTrimContainer <em>Generic Trim Container</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/util/BasicSwitch.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/util/BasicSwitch.java
index 7ae3910..6e91b1c 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/util/BasicSwitch.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/basic/util/BasicSwitch.java
@@ -21,9 +21,11 @@
 import org.eclipse.e4.ui.model.application.ui.MGenericTile;
 import org.eclipse.e4.ui.model.application.ui.MGenericTrimContainer;
 import org.eclipse.e4.ui.model.application.ui.MInput;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.basic.*;
 import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
@@ -166,6 +168,7 @@
 				if (result == null) result = caseHandlerContainer(window);
 				if (result == null) result = caseBindings(window);
 				if (result == null) result = caseSnippetContainer(window);
+				if (result == null) result = caseLifecycledElement(window);
 				if (result == null) result = caseUIElement(window);
 				if (result == null) result = caseApplicationElement(window);
 				if (result == null) result = defaultCase(theEObject);
@@ -181,6 +184,7 @@
 				if (result == null) result = caseHandlerContainer(trimmedWindow);
 				if (result == null) result = caseBindings(trimmedWindow);
 				if (result == null) result = caseSnippetContainer(trimmedWindow);
+				if (result == null) result = caseLifecycledElement(trimmedWindow);
 				if (result == null) result = caseUIElement(trimmedWindow);
 				if (result == null) result = caseApplicationElement(trimmedWindow);
 				if (result == null) result = defaultCase(theEObject);
@@ -593,6 +597,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Lifecycled Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Lifecycled Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLifecycledElement(MLifecycledElement object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Generic Trim Container</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/impl/UiFactoryImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/impl/UiFactoryImpl.java
index 97c92c1..f9d4934 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/impl/UiFactoryImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/impl/UiFactoryImpl.java
@@ -10,6 +10,7 @@
  */
 package org.eclipse.e4.ui.model.application.ui.impl;
 
+import org.eclipse.e4.ui.model.application.ui.*;
 import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
 import org.eclipse.e4.ui.model.application.ui.MUiFactory;
 import org.eclipse.e4.ui.model.application.ui.SideValue;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/impl/UiPackageImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/impl/UiPackageImpl.java
index 298c676..723ca91 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/impl/UiPackageImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/impl/UiPackageImpl.java
@@ -21,6 +21,7 @@
 import org.eclipse.e4.ui.model.application.ui.MGenericTile;
 import org.eclipse.e4.ui.model.application.ui.MGenericTrimContainer;
 import org.eclipse.e4.ui.model.application.ui.MInput;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.MUILabel;
@@ -1442,6 +1443,187 @@
 	public static final int SNIPPET_CONTAINER_OPERATION_COUNT = 0;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.e4.ui.model.application.ui.MLifecycledElement <em>Lifecycled Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.e4.ui.model.application.ui.MLifecycledElement
+	 * @see org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl#getLifecycledElement()
+	 * @generated
+	 */
+	public static final int LIFECYCLED_ELEMENT = 12;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__ELEMENT_ID = UI_ELEMENT__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__PERSISTED_STATE = UI_ELEMENT__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__TAGS = UI_ELEMENT__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__CONTRIBUTOR_URI = UI_ELEMENT__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__TRANSIENT_DATA = UI_ELEMENT__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__WIDGET = UI_ELEMENT__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__RENDERER = UI_ELEMENT__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__TO_BE_RENDERED = UI_ELEMENT__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__ON_TOP = UI_ELEMENT__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__VISIBLE = UI_ELEMENT__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__PARENT = UI_ELEMENT__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__CONTAINER_DATA = UI_ELEMENT__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__CUR_SHARED_REF = UI_ELEMENT__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__VISIBLE_WHEN = UI_ELEMENT__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__ACCESSIBILITY_PHRASE = UI_ELEMENT__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Lifecyle UR Is</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT__LIFECYLE_UR_IS = UI_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Lifecycled Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT_FEATURE_COUNT = UI_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Get Localized Accessibility Phrase</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT___GET_LOCALIZED_ACCESSIBILITY_PHRASE = UI_ELEMENT___GET_LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The number of operations of the '<em>Lifecycled Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIFECYCLED_ELEMENT_OPERATION_COUNT = UI_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.e4.ui.model.application.ui.SideValue <em>Side Value</em>}' enum.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1449,7 +1631,7 @@
 	 * @see org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl#getSideValue()
 	 * @generated
 	 */
-	public static final int SIDE_VALUE = 12;
+	public static final int SIDE_VALUE = 13;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -1540,6 +1722,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass lifecycledElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EEnum sideValueEEnum = null;
 
 	/**
@@ -2142,6 +2331,33 @@
 
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.e4.ui.model.application.ui.MLifecycledElement <em>Lifecycled Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Lifecycled Element</em>'.
+	 * @see org.eclipse.e4.ui.model.application.ui.MLifecycledElement
+	 * @generated
+	 */
+	public EClass getLifecycledElement() {
+		return lifecycledElementEClass;
+	}
+
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.e4.ui.model.application.ui.MLifecycledElement#getLifecyleURIs <em>Lifecyle UR Is</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Lifecyle UR Is</em>'.
+	 * @see org.eclipse.e4.ui.model.application.ui.MLifecycledElement#getLifecyleURIs()
+	 * @see #getLifecycledElement()
+	 * @generated
+	 */
+	public EAttribute getLifecycledElement_LifecyleURIs() {
+		return (EAttribute)lifecycledElementEClass.getEStructuralFeatures().get(0);
+	}
+
+
+	/**
 	 * Returns the meta object for enum '{@link org.eclipse.e4.ui.model.application.ui.SideValue <em>Side Value</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2235,6 +2451,9 @@
 		snippetContainerEClass = createEClass(SNIPPET_CONTAINER);
 		createEReference(snippetContainerEClass, SNIPPET_CONTAINER__SNIPPETS);
 
+		lifecycledElementEClass = createEClass(LIFECYCLED_ELEMENT);
+		createEAttribute(lifecycledElementEClass, LIFECYCLED_ELEMENT__LIFECYLE_UR_IS);
+
 		// Create enums
 		sideValueEEnum = createEEnum(SIDE_VALUE);
 	}
@@ -2306,6 +2525,7 @@
 		genericTrimContainerEClass.getEGenericSuperTypes().add(g1);
 		expressionEClass.getESuperTypes().add(theApplicationPackage.getApplicationElement());
 		coreExpressionEClass.getESuperTypes().add(this.getExpression());
+		lifecycledElementEClass.getESuperTypes().add(this.getUIElement());
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(contextEClass, MContext.class, "Context", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
@@ -2368,6 +2588,9 @@
 		initEClass(snippetContainerEClass, MSnippetContainer.class, "SnippetContainer", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 		initEReference(getSnippetContainer_Snippets(), this.getUIElement(), null, "snippets", null, 0, -1, MSnippetContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
 
+		initEClass(lifecycledElementEClass, MLifecycledElement.class, "LifecycledElement", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLifecycledElement_LifecyleURIs(), ecorePackage.getEString(), "lifecyleURIs", null, 0, -1, MLifecycledElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
 		// Initialize enums and add enum literals
 		initEEnum(sideValueEEnum, SideValue.class, "SideValue"); //$NON-NLS-1$
 		addEEnumLiteral(sideValueEEnum, SideValue.TOP);
@@ -2734,6 +2957,24 @@
 		public static final EReference SNIPPET_CONTAINER__SNIPPETS = eINSTANCE.getSnippetContainer_Snippets();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.e4.ui.model.application.ui.MLifecycledElement <em>Lifecycled Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.e4.ui.model.application.ui.MLifecycledElement
+		 * @see org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl#getLifecycledElement()
+		 * @generated
+		 */
+		public static final EClass LIFECYCLED_ELEMENT = eINSTANCE.getLifecycledElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Lifecyle UR Is</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute LIFECYCLED_ELEMENT__LIFECYLE_UR_IS = eINSTANCE.getLifecycledElement_LifecyleURIs();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.e4.ui.model.application.ui.SideValue <em>Side Value</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/MMenu.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/MMenu.java
index d58006f..6879ff0 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/MMenu.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/MMenu.java
@@ -11,6 +11,7 @@
 package org.eclipse.e4.ui.model.application.ui.menu;
 
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 
 /**
  * <!-- begin-user-doc -->
@@ -27,7 +28,7 @@
  * @model
  * @generated
  */
-public interface MMenu extends MMenuElement, MElementContainer<MMenuElement> {
+public interface MMenu extends MMenuElement, MElementContainer<MMenuElement>, MLifecycledElement {
 	/**
 	 * Returns the value of the '<em><b>Enabled</b></em>' attribute.
 	 * The default value is <code>"true"</code>.
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuFactoryImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuFactoryImpl.java
index 674df3d..6c8f9c7 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuFactoryImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuFactoryImpl.java
@@ -10,6 +10,7 @@
  */
 package org.eclipse.e4.ui.model.application.ui.menu.impl;
 
+import org.eclipse.e4.ui.model.application.ui.menu.*;
 import org.eclipse.e4.ui.model.application.ui.menu.ItemType;
 import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuImpl.java
index f79a71c..43d0759 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuImpl.java
@@ -13,6 +13,7 @@
 import java.util.Collection;
 import java.util.List;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
@@ -24,6 +25,7 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
 import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
@@ -36,6 +38,7 @@
  * <ul>
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.menu.impl.MenuImpl#getChildren <em>Children</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.menu.impl.MenuImpl#getSelectedElement <em>Selected Element</em>}</li>
+ *   <li>{@link org.eclipse.e4.ui.model.application.ui.menu.impl.MenuImpl#getLifecyleURIs <em>Lifecyle UR Is</em>}</li>
  *   <li>{@link org.eclipse.e4.ui.model.application.ui.menu.impl.MenuImpl#isEnabled <em>Enabled</em>}</li>
  * </ul>
  * </p>
@@ -64,6 +67,16 @@
 	protected MMenuElement selectedElement;
 
 	/**
+	 * The cached value of the '{@link #getLifecyleURIs() <em>Lifecyle UR Is</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLifecyleURIs()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<String> lifecyleURIs;
+
+	/**
 	 * The default value of the '{@link #isEnabled() <em>Enabled</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -157,6 +170,18 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public List<String> getLifecyleURIs() {
+		if (lifecyleURIs == null) {
+			lifecyleURIs = new EDataTypeUniqueEList<String>(String.class, this, MenuPackageImpl.MENU__LIFECYLE_UR_IS);
+		}
+		return lifecyleURIs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public boolean isEnabled() {
 		return enabled;
 	}
@@ -215,6 +240,8 @@
 			case MenuPackageImpl.MENU__SELECTED_ELEMENT:
 				if (resolve) return getSelectedElement();
 				return basicGetSelectedElement();
+			case MenuPackageImpl.MENU__LIFECYLE_UR_IS:
+				return getLifecyleURIs();
 			case MenuPackageImpl.MENU__ENABLED:
 				return isEnabled();
 		}
@@ -237,6 +264,10 @@
 			case MenuPackageImpl.MENU__SELECTED_ELEMENT:
 				setSelectedElement((MMenuElement)newValue);
 				return;
+			case MenuPackageImpl.MENU__LIFECYLE_UR_IS:
+				getLifecyleURIs().clear();
+				getLifecyleURIs().addAll((Collection<? extends String>)newValue);
+				return;
 			case MenuPackageImpl.MENU__ENABLED:
 				setEnabled((Boolean)newValue);
 				return;
@@ -258,6 +289,9 @@
 			case MenuPackageImpl.MENU__SELECTED_ELEMENT:
 				setSelectedElement((MMenuElement)null);
 				return;
+			case MenuPackageImpl.MENU__LIFECYLE_UR_IS:
+				getLifecyleURIs().clear();
+				return;
 			case MenuPackageImpl.MENU__ENABLED:
 				setEnabled(ENABLED_EDEFAULT);
 				return;
@@ -277,6 +311,8 @@
 				return children != null && !children.isEmpty();
 			case MenuPackageImpl.MENU__SELECTED_ELEMENT:
 				return selectedElement != null;
+			case MenuPackageImpl.MENU__LIFECYLE_UR_IS:
+				return lifecyleURIs != null && !lifecyleURIs.isEmpty();
 			case MenuPackageImpl.MENU__ENABLED:
 				return enabled != ENABLED_EDEFAULT;
 		}
@@ -297,6 +333,12 @@
 				default: return -1;
 			}
 		}
+		if (baseClass == MLifecycledElement.class) {
+			switch (derivedFeatureID) {
+				case MenuPackageImpl.MENU__LIFECYLE_UR_IS: return UiPackageImpl.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS;
+				default: return -1;
+			}
+		}
 		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
 	}
 
@@ -314,6 +356,12 @@
 				default: return -1;
 			}
 		}
+		if (baseClass == MLifecycledElement.class) {
+			switch (baseFeatureID) {
+				case UiPackageImpl.LIFECYCLED_ELEMENT__LIFECYLE_UR_IS: return MenuPackageImpl.MENU__LIFECYLE_UR_IS;
+				default: return -1;
+			}
+		}
 		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
 	}
 
@@ -327,7 +375,9 @@
 		if (eIsProxy()) return super.toString();
 
 		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (enabled: "); //$NON-NLS-1$
+		result.append(" (lifecyleURIs: "); //$NON-NLS-1$
+		result.append(lifecyleURIs);
+		result.append(", enabled: "); //$NON-NLS-1$
 		result.append(enabled);
 		result.append(')');
 		return result.toString();
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuPackageImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuPackageImpl.java
index bec00b8..c4c0afe 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuPackageImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/impl/MenuPackageImpl.java
@@ -1551,13 +1551,22 @@
 	public static final int MENU__SELECTED_ELEMENT = MENU_ELEMENT_FEATURE_COUNT + 1;
 
 	/**
+	 * The feature id for the '<em><b>Lifecyle UR Is</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MENU__LIFECYLE_UR_IS = MENU_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
 	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	public static final int MENU__ENABLED = MENU_ELEMENT_FEATURE_COUNT + 2;
+	public static final int MENU__ENABLED = MENU_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The number of structural features of the '<em>Menu</em>' class.
@@ -1566,7 +1575,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int MENU_FEATURE_COUNT = MENU_ELEMENT_FEATURE_COUNT + 3;
+	public static final int MENU_FEATURE_COUNT = MENU_ELEMENT_FEATURE_COUNT + 4;
 
 	/**
 	 * The operation id for the '<em>Get Localized Accessibility Phrase</em>' operation.
@@ -2021,6 +2030,15 @@
 	public static final int POPUP_MENU__SELECTED_ELEMENT = MENU__SELECTED_ELEMENT;
 
 	/**
+	 * The feature id for the '<em><b>Lifecyle UR Is</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int POPUP_MENU__LIFECYLE_UR_IS = MENU__LIFECYLE_UR_IS;
+
+	/**
 	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -4444,6 +4462,15 @@
 	public static final int RENDERED_MENU__SELECTED_ELEMENT = MENU__SELECTED_ELEMENT;
 
 	/**
+	 * The feature id for the '<em><b>Lifecyle UR Is</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RENDERED_MENU__LIFECYLE_UR_IS = MENU__LIFECYLE_UR_IS;
+
+	/**
 	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -6452,6 +6479,15 @@
 	public static final int OPAQUE_MENU__SELECTED_ELEMENT = MENU__SELECTED_ELEMENT;
 
 	/**
+	 * The feature id for the '<em><b>Lifecyle UR Is</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OPAQUE_MENU__LIFECYLE_UR_IS = MENU__LIFECYLE_UR_IS;
+
+	/**
 	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -7697,6 +7733,8 @@
 		EGenericType g2 = createEGenericType(this.getMenuElement());
 		g1.getETypeArguments().add(g2);
 		menuEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(theUiPackage.getLifecycledElement());
+		menuEClass.getEGenericSuperTypes().add(g1);
 		g1 = createEGenericType(theUiPackage.getElementContainer());
 		g2 = createEGenericType(this.getMenuElement());
 		g1.getETypeArguments().add(g2);
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/util/MenuAdapterFactory.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/util/MenuAdapterFactory.java
index c50d3f9..7d021a7 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/util/MenuAdapterFactory.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/util/MenuAdapterFactory.java
@@ -14,9 +14,11 @@
 import org.eclipse.e4.ui.model.application.MContribution;
 import org.eclipse.e4.ui.model.application.ui.MContext;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.MUILabel;
 import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
+import org.eclipse.e4.ui.model.application.ui.menu.*;
 import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
@@ -241,6 +243,10 @@
 				return createElementContainerAdapter();
 			}
 			@Override
+			public Adapter caseLifecycledElement(MLifecycledElement object) {
+				return createLifecycledElementAdapter();
+			}
+			@Override
 			public Adapter caseContext(MContext object) {
 				return createContextAdapter();
 			}
@@ -735,6 +741,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.ui.MLifecycledElement <em>Lifecycled Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MLifecycledElement
+	 * @generated
+	 */
+	public Adapter createLifecycledElementAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.ui.MContext <em>Context</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/util/MenuSwitch.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/util/MenuSwitch.java
index 23acb34..359c9fd 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/util/MenuSwitch.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/menu/util/MenuSwitch.java
@@ -14,9 +14,11 @@
 import org.eclipse.e4.ui.model.application.MContribution;
 import org.eclipse.e4.ui.model.application.ui.MContext;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.MUILabel;
 import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
+import org.eclipse.e4.ui.model.application.ui.menu.*;
 import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
@@ -162,6 +164,7 @@
 				T1 result = caseMenu(menu);
 				if (result == null) result = caseMenuElement(menu);
 				if (result == null) result = caseElementContainer(menu);
+				if (result == null) result = caseLifecycledElement(menu);
 				if (result == null) result = caseUIElement(menu);
 				if (result == null) result = caseUILabel(menu);
 				if (result == null) result = caseApplicationElement(menu);
@@ -184,6 +187,7 @@
 				if (result == null) result = caseContext(popupMenu);
 				if (result == null) result = caseMenuElement(popupMenu);
 				if (result == null) result = caseElementContainer(popupMenu);
+				if (result == null) result = caseLifecycledElement(popupMenu);
 				if (result == null) result = caseUIElement(popupMenu);
 				if (result == null) result = caseUILabel(popupMenu);
 				if (result == null) result = caseApplicationElement(popupMenu);
@@ -303,6 +307,7 @@
 				if (result == null) result = caseMenu(renderedMenu);
 				if (result == null) result = caseMenuElement(renderedMenu);
 				if (result == null) result = caseElementContainer(renderedMenu);
+				if (result == null) result = caseLifecycledElement(renderedMenu);
 				if (result == null) result = caseUIElement(renderedMenu);
 				if (result == null) result = caseUILabel(renderedMenu);
 				if (result == null) result = caseApplicationElement(renderedMenu);
@@ -403,6 +408,7 @@
 				if (result == null) result = caseMenu(opaqueMenu);
 				if (result == null) result = caseMenuElement(opaqueMenu);
 				if (result == null) result = caseElementContainer(opaqueMenu);
+				if (result == null) result = caseLifecycledElement(opaqueMenu);
 				if (result == null) result = caseUIElement(opaqueMenu);
 				if (result == null) result = caseUILabel(opaqueMenu);
 				if (result == null) result = caseApplicationElement(opaqueMenu);
@@ -909,6 +915,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Lifecycled Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Lifecycled Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLifecycledElement(MLifecycledElement object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Context</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/util/UiAdapterFactory.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/util/UiAdapterFactory.java
index dd37f9e..058802d 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/util/UiAdapterFactory.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/util/UiAdapterFactory.java
@@ -11,6 +11,7 @@
 package org.eclipse.e4.ui.model.application.ui.util;
 
 import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.model.application.ui.*;
 import org.eclipse.e4.ui.model.application.ui.MContext;
 import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
 import org.eclipse.e4.ui.model.application.ui.MDirtyable;
@@ -134,6 +135,10 @@
 				return createSnippetContainerAdapter();
 			}
 			@Override
+			public Adapter caseLifecycledElement(MLifecycledElement object) {
+				return createLifecycledElementAdapter();
+			}
+			@Override
 			public Adapter caseApplicationElement(MApplicationElement object) {
 				return createApplicationElementAdapter();
 			}
@@ -326,6 +331,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.ui.MLifecycledElement <em>Lifecycled Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MLifecycledElement
+	 * @generated
+	 */
+	public Adapter createLifecycledElementAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.MApplicationElement <em>Element</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/util/UiSwitch.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/util/UiSwitch.java
index b8ffb09..8e8bc6a 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/util/UiSwitch.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/ui/util/UiSwitch.java
@@ -11,6 +11,7 @@
 package org.eclipse.e4.ui.model.application.ui.util;
 
 import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.model.application.ui.*;
 import org.eclipse.e4.ui.model.application.ui.MContext;
 import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
 import org.eclipse.e4.ui.model.application.ui.MDirtyable;
@@ -172,6 +173,14 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case UiPackageImpl.LIFECYCLED_ELEMENT: {
+				MLifecycledElement lifecycledElement = (MLifecycledElement)theEObject;
+				T1 result = caseLifecycledElement(lifecycledElement);
+				if (result == null) result = caseUIElement(lifecycledElement);
+				if (result == null) result = caseApplicationElement(lifecycledElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -357,6 +366,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Lifecycled Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Lifecycled Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLifecycledElement(MLifecycledElement object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Element</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationAdapterFactory.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationAdapterFactory.java
index 4f818b0..5563d41 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationAdapterFactory.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationAdapterFactory.java
@@ -11,6 +11,7 @@
 package org.eclipse.e4.ui.model.application.util;
 
 import java.util.Map;
+import org.eclipse.e4.ui.model.application.*;
 import org.eclipse.e4.ui.model.application.MAddon;
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.MApplicationElement;
@@ -22,6 +23,7 @@
 import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.e4.ui.model.application.ui.MContext;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.menu.MMenuContributions;
@@ -157,6 +159,10 @@
 				return createSnippetContainerAdapter();
 			}
 			@Override
+			public Adapter caseLifecycledElement(MLifecycledElement object) {
+				return createLifecycledElementAdapter();
+			}
+			@Override
 			public Adapter defaultCase(EObject object) {
 				return createEObjectAdapter();
 			}
@@ -415,6 +421,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.ui.MLifecycledElement <em>Lifecycled Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MLifecycledElement
+	 * @generated
+	 */
+	public Adapter createLifecycledElementAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for the default case.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null.
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationSwitch.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationSwitch.java
index 1aa0769..47641fd 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationSwitch.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationSwitch.java
@@ -11,6 +11,7 @@
 package org.eclipse.e4.ui.model.application.util;
 
 import java.util.Map;
+import org.eclipse.e4.ui.model.application.*;
 import org.eclipse.e4.ui.model.application.MAddon;
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.MApplicationElement;
@@ -22,6 +23,7 @@
 import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.e4.ui.model.application.ui.MContext;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
 import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.menu.MMenuContributions;
@@ -107,6 +109,7 @@
 				if (result == null) result = caseToolBarContributions(application);
 				if (result == null) result = caseTrimContributions(application);
 				if (result == null) result = caseSnippetContainer(application);
+				if (result == null) result = caseLifecycledElement(application);
 				if (result == null) result = caseUIElement(application);
 				if (result == null) result = caseApplicationElement(application);
 				if (result == null) result = defaultCase(theEObject);
@@ -399,6 +402,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Lifecycled Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Lifecycled Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLifecycledElement(MLifecycledElement object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerShowProcessor.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerShowProcessor.java
index e10afdd..caa4f1e 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerShowProcessor.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerShowProcessor.java
@@ -13,6 +13,8 @@
 import java.util.HashMap;
 import javax.inject.Inject;
 import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.di.LifecycleAboutToHide;
+import org.eclipse.e4.ui.di.LifecycleAboutToShow;
 import org.eclipse.e4.ui.internal.workbench.swt.AbstractPartRenderer;
 import org.eclipse.e4.ui.internal.workbench.swt.Policy;
 import org.eclipse.e4.ui.internal.workbench.swt.WorkbenchSWTActivator;
@@ -20,6 +22,7 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
 import org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu;
 import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.LifecycleHelper;
 import org.eclipse.e4.ui.workbench.swt.factories.IRendererFactory;
 import org.eclipse.jface.action.IMenuListener2;
 import org.eclipse.jface.action.IMenuManager;
@@ -65,6 +68,10 @@
 		MenuManager menuManager = (MenuManager) manager;
 		final MMenu menuModel = renderer.getMenuModel(menuManager);
 		final Menu menu = menuManager.getMenu();
+
+		LifecycleHelper.invokeLifecycleHandlers(modelService, menuModel,
+				LifecycleAboutToShow.class);
+
 		if (menuModel != null && menuManager != null) {
 			cleanUp(menu, menuModel, menuManager);
 		}
@@ -96,6 +103,10 @@
 		}
 		MenuManager menuManager = (MenuManager) manager;
 		final MMenu menuModel = renderer.getMenuModel(menuManager);
+
+		LifecycleHelper.invokeLifecycleHandlers(modelService, menuModel,
+				LifecycleAboutToHide.class);
+
 		final Menu menu = menuManager.getMenu();
 		if (menuModel != null) {
 			showMenu(menu, menuModel, menuManager);
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/LifecycleHelper.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/LifecycleHelper.java
new file mode 100644
index 0000000..2b82e13
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/LifecycleHelper.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2012 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.e4.ui.workbench.modeling;
+
+import java.lang.annotation.Annotation;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.ui.model.application.ui.MLifecycledElement;
+
+/**
+ * Utility methods
+ */
+public class LifecycleHelper {
+	/**
+	 * Invoke all lifecycle listeners
+	 * 
+	 * @param modelService
+	 *            the model service
+	 * @param element
+	 *            the lifecycle element
+	 * @param annotation
+	 *            the annotation to invoke
+	 */
+	public static void invokeLifecycleHandlers(EModelService modelService,
+			MLifecycledElement element, Class<? extends Annotation> annotation) {
+		if (!element.getLifecyleURIs().isEmpty()) {
+			IEclipseContext modelContext = modelService.getContainingContext(element);
+			IContributionFactory contributionFactory = (IContributionFactory) modelContext
+					.get(IContributionFactory.class.getName());
+
+			for (String u : element.getLifecyleURIs()) {
+				Object o = element.getTransientData().get(u);
+				if (o == null) {
+					o = contributionFactory.create(u, modelContext);
+					element.getTransientData().put(u, o);
+				}
+				ContextInjectionFactory.invoke(o, annotation, modelContext, null);
+			}
+		}
+	}
+
+	/**
+	 * Invoke all lifecycle listeners
+	 * 
+	 * @param modelService
+	 *            the model service
+	 * @param element
+	 *            the lifecycle element
+	 * @param annotation
+	 *            the annotation to invoke
+	 * @return collected boolean value
+	 */
+	public static boolean invokeBooleanLifecycleHandlers(EModelService modelService,
+			MLifecycledElement element, Class<? extends Annotation> annotation) {
+		boolean rv = true;
+		if (!element.getLifecyleURIs().isEmpty()) {
+			IEclipseContext modelContext = modelService.getContainingContext(element);
+			IContributionFactory contributionFactory = (IContributionFactory) modelContext
+					.get(IContributionFactory.class.getName());
+
+			for (String u : element.getLifecyleURIs()) {
+				Object o = element.getTransientData().get(u);
+				if (o == null) {
+					o = contributionFactory.create(u, modelContext);
+					element.getTransientData().put(u, o);
+				}
+				rv &= (Boolean) ContextInjectionFactory.invoke(o, annotation, modelContext,
+						Boolean.TRUE);
+			}
+		}
+		return rv;
+	}
+}