/// <summary>
        /// Create a shape of the given type for the given element type.
        /// </summary>
        /// <param name="modelElement">Model element.</param>
        /// <param name="shapeTypeId">Shape type id.</param>
        /// <param name="assignments">Properties for the shape.</param>
        /// <returns>Shape if one could be created. Null otherwise.</returns>
        public override DslModeling.ModelElement CreateShapeForElement(System.Guid shapeTypeId, DslModeling::ModelElement modelElement, params DslModeling::PropertyAssignment[] assignments)
        {
            DslEditorDiagrams::NodeShape nodeShape = null;

            if (createShapeMap == null)
            {
                createShapeMap = new global::System.Collections.Generic.Dictionary <global::System.Guid, int>(15);
                createShapeMap.Add(global::Tum.VModellXT.RolleDependencyShape.DomainClassId, 0);
                createShapeMap.Add(global::Tum.VModellXT.DisziplinDependencyShape.DomainClassId, 1);
                createShapeMap.Add(global::Tum.VModellXT.ErzAbhDependencyShape.DomainClassId, 2);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.AblaufbausteinShape.DomainClassId, 3);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.StartpunktShape.DomainClassId, 4);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.EndepunktShape.DomainClassId, 5);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.AblaufentscheidungspunktShape.DomainClassId, 6);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.AblaufbausteinpunktShape.DomainClassId, 7);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.SplitShape.DomainClassId, 8);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.SplitEingangShape.DomainClassId, 9);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.SplitAusgangShape.DomainClassId, 10);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.JoinShape.DomainClassId, 11);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.JoinEingangShape.DomainClassId, 12);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.JoinAusgangShape.DomainClassId, 13);
                createShapeMap.Add(global::Tum.VModellXT.Dynamik.AblaufbausteinspezifikationShape.DomainClassId, 14);
            }
            int index;

            if (!createShapeMap.TryGetValue(shapeTypeId, out index))
            {
                throw new global::System.ArgumentException("Unrecognized shape type " + shapeTypeId.ToString());
            }
            switch (index)
            {
            case 0: nodeShape = new global::Tum.VModellXT.RolleDependencyShape(modelElement.Store, assignments); break;

            case 1: nodeShape = new global::Tum.VModellXT.DisziplinDependencyShape(modelElement.Store, assignments); break;

            case 2: nodeShape = new global::Tum.VModellXT.ErzAbhDependencyShape(modelElement.Store, assignments); break;

            case 3: nodeShape = new global::Tum.VModellXT.Dynamik.AblaufbausteinShape(modelElement.Store, assignments); break;

            case 4: nodeShape = new global::Tum.VModellXT.Dynamik.StartpunktShape(modelElement.Store, assignments); break;

            case 5: nodeShape = new global::Tum.VModellXT.Dynamik.EndepunktShape(modelElement.Store, assignments); break;

            case 6: nodeShape = new global::Tum.VModellXT.Dynamik.AblaufentscheidungspunktShape(modelElement.Store, assignments); break;

            case 7: nodeShape = new global::Tum.VModellXT.Dynamik.AblaufbausteinpunktShape(modelElement.Store, assignments); break;

            case 8: nodeShape = new global::Tum.VModellXT.Dynamik.SplitShape(modelElement.Store, assignments); break;

            case 9: nodeShape = new global::Tum.VModellXT.Dynamik.SplitEingangShape(modelElement.Store, assignments); break;

            case 10: nodeShape = new global::Tum.VModellXT.Dynamik.SplitAusgangShape(modelElement.Store, assignments); break;

            case 11: nodeShape = new global::Tum.VModellXT.Dynamik.JoinShape(modelElement.Store, assignments); break;

            case 12: nodeShape = new global::Tum.VModellXT.Dynamik.JoinEingangShape(modelElement.Store, assignments); break;

            case 13: nodeShape = new global::Tum.VModellXT.Dynamik.JoinAusgangShape(modelElement.Store, assignments); break;

            case 14: nodeShape = new global::Tum.VModellXT.Dynamik.AblaufbausteinspezifikationShape(modelElement.Store, assignments); break;
            }

            if (nodeShape == null)
            {
                throw new System.InvalidOperationException("Couldn't create shape of type " + shapeTypeId.ToString() + " for model element " + modelElement.ToString());
            }

            nodeShape.Element = modelElement;

            return(nodeShape);
        }
        /// <summary>
        /// Create a shape of the given type for the given element type.
        /// </summary>
        /// <param name="modelElement">Model element.</param>
        /// <param name="shapeTypeId">Shape type id.</param>
        /// <param name="assignments">Properties for the shape.</param>
        /// <returns>Shape if one could be created. Null otherwise.</returns>
        public override DslModeling.ModelElement CreateShapeForElement(System.Guid shapeTypeId, DslModeling::ModelElement modelElement, params DslModeling::PropertyAssignment[] assignments)
        {
			DslEditorDiagrams::NodeShape nodeShape = null;	
		
			if( createShapeMap == null )
			{
				createShapeMap = new global::System.Collections.Generic.Dictionary<global::System.Guid, int>(15);
				createShapeMap.Add(global::Tum.VModellXT.RolleDependencyShape.DomainClassId, 0);
				createShapeMap.Add(global::Tum.VModellXT.DisziplinDependencyShape.DomainClassId, 1);
				createShapeMap.Add(global::Tum.VModellXT.ErzAbhDependencyShape.DomainClassId, 2);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.AblaufbausteinShape.DomainClassId, 3);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.StartpunktShape.DomainClassId, 4);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.EndepunktShape.DomainClassId, 5);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.AblaufentscheidungspunktShape.DomainClassId, 6);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.AblaufbausteinpunktShape.DomainClassId, 7);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.SplitShape.DomainClassId, 8);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.SplitEingangShape.DomainClassId, 9);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.SplitAusgangShape.DomainClassId, 10);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.JoinShape.DomainClassId, 11);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.JoinEingangShape.DomainClassId, 12);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.JoinAusgangShape.DomainClassId, 13);
				createShapeMap.Add(global::Tum.VModellXT.Dynamik.AblaufbausteinspezifikationShape.DomainClassId, 14);
			}
			int index;
			if (!createShapeMap.TryGetValue(shapeTypeId, out index))
				throw new global::System.ArgumentException("Unrecognized shape type " + shapeTypeId.ToString());
			switch (index)
			{
				case 0: nodeShape = new global::Tum.VModellXT.RolleDependencyShape(modelElement.Store, assignments); break;
				case 1: nodeShape = new global::Tum.VModellXT.DisziplinDependencyShape(modelElement.Store, assignments); break;
				case 2: nodeShape = new global::Tum.VModellXT.ErzAbhDependencyShape(modelElement.Store, assignments); break;
				case 3: nodeShape = new global::Tum.VModellXT.Dynamik.AblaufbausteinShape(modelElement.Store, assignments); break;
				case 4: nodeShape = new global::Tum.VModellXT.Dynamik.StartpunktShape(modelElement.Store, assignments); break;
				case 5: nodeShape = new global::Tum.VModellXT.Dynamik.EndepunktShape(modelElement.Store, assignments); break;
				case 6: nodeShape = new global::Tum.VModellXT.Dynamik.AblaufentscheidungspunktShape(modelElement.Store, assignments); break;
				case 7: nodeShape = new global::Tum.VModellXT.Dynamik.AblaufbausteinpunktShape(modelElement.Store, assignments); break;
				case 8: nodeShape = new global::Tum.VModellXT.Dynamik.SplitShape(modelElement.Store, assignments); break;
				case 9: nodeShape = new global::Tum.VModellXT.Dynamik.SplitEingangShape(modelElement.Store, assignments); break;
				case 10: nodeShape = new global::Tum.VModellXT.Dynamik.SplitAusgangShape(modelElement.Store, assignments); break;
				case 11: nodeShape = new global::Tum.VModellXT.Dynamik.JoinShape(modelElement.Store, assignments); break;
				case 12: nodeShape = new global::Tum.VModellXT.Dynamik.JoinEingangShape(modelElement.Store, assignments); break;
				case 13: nodeShape = new global::Tum.VModellXT.Dynamik.JoinAusgangShape(modelElement.Store, assignments); break;
				case 14: nodeShape = new global::Tum.VModellXT.Dynamik.AblaufbausteinspezifikationShape(modelElement.Store, assignments); break;
				
			}

			if( nodeShape == null )
				throw new System.InvalidOperationException("Couldn't create shape of type " + shapeTypeId.ToString() + " for model element " + modelElement.ToString());
			
			nodeShape.Element = modelElement;
			
			return nodeShape;
		
        }