/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">The store this view model belongs to.</param>
        /// <param name="element">Element to be hosted by this view model.</param>
		/// <param name="parentVM">Parent view model. Can be null.</param>
		/// <param name="bCallInitialize"></param>
        protected DomainElementSpecificViewModelBase(DslEditorViewModelData::ViewModelStore viewModelStore, global::Tum.PDE.ModelingDSL.DomainElement element, DslEditorViewModel::BaseModelElementViewModel parentVM, bool bCallInitialize)
            : base(viewModelStore, element, parentVM, false)
        {
			if( bCallInitialize )
			{
				this.Initialize();
				
				this.InitializeRelationships();
				this.InitializeSubscription();				
			}
		}
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">The store this view model belongs to.</param>
        /// <param name="element">Element to be hosted by this view model.</param>
		/// <param name="parentVM">Parent view model. Can be null.</param>
		/// <param name="bCallInitialize"></param>
        public EmbeddableElementSpecificViewModel(DslEditorViewModelData::ViewModelStore viewModelStore, global::Tum.PDE.ModelingDSL.EmbeddableElement element, DslEditorViewModel::BaseModelElementViewModel parentVM, bool bCallInitialize)
            : base(viewModelStore, element, parentVM, bCallInitialize)
        {
		}		
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">The store this view model belongs to.</param>
        /// <param name="element">Element to be hosted by this view model.</param>
		/// <param name="parentVM">Parent view model. Can be null.</param>
        public EmbeddableElementSpecificViewModel(DslEditorViewModelData::ViewModelStore viewModelStore, global::Tum.PDE.ModelingDSL.EmbeddableElement element, DslEditorViewModel::BaseModelElementViewModel parentVM)
            : this(viewModelStore, element, parentVM, true)
        {
		}
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">The store this view model belongs to.</param>
        /// <param name="element">Element to be hosted by this view model.</param>
		/// <param name="parentVM">Parent view model. Can be null.</param>
        public ConversionModelInfoSpecificViewModel(DslEditorViewModelData::ViewModelStore viewModelStore, global::Tum.PDE.ModelingDSL.ConversionModelInfo element, DslEditorViewModel::BaseModelElementViewModel parentVM)
            : this(viewModelStore, element, parentVM, true)
        {
		}
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">The store this view model belongs to.</param>
        /// <param name="element">Element to be hosted by this view model.</param>
		/// <param name="parentVM">Parent view model. Can be null.</param>
		/// <param name="bCallInitialize"></param>
        public ConversionModelInfoSpecificViewModel(DslEditorViewModelData::ViewModelStore viewModelStore, global::Tum.PDE.ModelingDSL.ConversionModelInfo element, DslEditorViewModel::BaseModelElementViewModel parentVM, bool bCallInitialize)
            : base(viewModelStore, element, parentVM, bCallInitialize)
        {
		}		
        public override DslEditorViewModelModelTree::ModelElementTreeViewModel CreateModelElementTreeViewModel(DslModeling::ModelElement element, DslModeling::ElementLink link, System.Guid domainRoleId, DslEditorViewModelModelTree::ModelElementTreeViewModel parent, bool bHookUpEvents, bool bCreateContextMenus, DslEditorViewModel::MainModelTreeViewModel mainModelTreeVm)
		{
			if( element is DslEditorModeling::IDomainModelOwnable )
			{
				if( global::Tum.FamilyTreeDSL.FamilyTreeDSLDomainModel.DomainModelId == (element as DslEditorModeling::IDomainModelOwnable).GetDomainModelTypeId() )
					return new Tum.FamilyTreeDSL.ViewModel.ModelTree.ModelTreeFamilyTreeDSLViewModel(this.Store, element, link, domainRoleId, parent, bHookUpEvents, bCreateContextMenus, mainModelTreeVm); 
			}
			
			return new DslEditorViewModelModelTree::ModelElementTreeViewModel(this.Store, element, link, domainRoleId, parent, bHookUpEvents, bCreateContextMenus, mainModelTreeVm); 
		}
		/// <summary>
		/// Constuctor.
		/// </summary>
		/// <param name="viewModelStore">The store this view model belongs to.</param>
		/// <param name="modelContext">Model context.</param>
		protected VSPluginDSLSpecificElementsDiagramTemplateSurfaceViewModelBase(DslEditorViewModels.Data.ViewModelStore viewModelStore, DslEditorModeling::ModelContext modelContext)
		    : base(viewModelStore, modelContext)
		{
		}
		/// <summary>
        /// Creates a specific view model for the given model element.
        /// </summary>
        /// <param name="store">Viewmodelstore.</param>
        /// <param name="modelElement">Model element to create a specific VM for.</param>
        /// <returns>Specific VM.</returns>
        protected override DslEditorDependencies::SpecificDependenciesItemViewModel CreateSpecificViewModel(DslEditorViewModels.Data.ViewModelStore store, DslModeling::ModelElement modelElement)
		{
			VModellXTErzAbhGrDependencyTemplateItemViewModel vm = new VModellXTErzAbhGrDependencyTemplateItemViewModel(store, modelElement);
			return vm;
		}
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">The store this view model belongs to.</param>
        /// <param name="element">Element to be hosted by this view model.</param>
		/// <param name="parentVM">Parent view model. Can be null.</param>
        public AttributedDomainElementSpecificViewModel(DslEditorViewModelData::ViewModelStore viewModelStore, global::Tum.PDE.ModelingDSL.AttributedDomainElement element, DslEditorViewModel::BaseModelElementViewModel parentVM)
            : this(viewModelStore, element, parentVM, true)
        {
		}
		/// <summary>
		/// Constuctor.
		/// </summary>
		/// <param name="viewModelStore">The store this view model belongs to.</param>
		protected VSPluginDSLModalDiagramTemplateSurfaceViewModelBase(DslEditorViewModels.Data.ViewModelStore viewModelStore)
		    : base(viewModelStore)
		{
		
		}
		/// <summary>
        /// Constructor. The view model constructed this way does not react on model changes, as such DoHookUpEvents is false.
        /// </summary>
        /// <param name="viewModelStore">The store this view model belongs to.</param>
        /// <param name="element">Element represented by this view model.</param>
        public VModellXTErzAbhGrDependencyTemplateItemViewModel(DslEditorViewModels.Data.ViewModelStore viewModelStore, DslModeling::ModelElement element)
            : base(viewModelStore, element)
        {

        }
		/// <summary>
		/// Constuctor.
		/// </summary>
		/// <param name="viewModelStore">The store this view model belongs to.</param>
		/// <param name="element">Element.</param>
		protected VSPluginDSLModalDiagramTemplateSurfaceViewModelBase(DslEditorViewModels.Data.ViewModelStore viewModelStore, DslEditorModeling::DomainModelElement element)
		    : base(viewModelStore, element)
		{
		
		}
		/// <summary>
		/// Constuctor.
		/// </summary>
		/// <param name="viewModelStore">The store this view model belongs to.</param>
		public VSPluginDSLModalDiagramTemplateSurfaceViewModel(DslEditorViewModels.Data.ViewModelStore viewModelStore)
		    : base(viewModelStore)
		{
		
		}
		/// <summary>
		/// Constuctor.
		/// </summary>
		/// <param name="viewModelStore">The store this view model belongs to.</param>
		protected VSPluginDSLSpecificElementsDiagramTemplateSurfaceViewModelBase(DslEditorViewModels.Data.ViewModelStore viewModelStore)
		    : base(viewModelStore)
		{
		
		}
        public override DslEditorViewModelModelTree::ModelElementTreeViewModel CreateModelElementTreeViewModel(DslModeling::ModelElement element, DslModeling::ElementLink link, System.Guid domainRoleId, DslEditorViewModelModelTree::ModelElementTreeViewModel parent, bool bHookUpEvents, bool bCreateContextMenus, DslEditorViewModel::MainModelTreeViewModel mainModelTreeVm)
		{
			if( element is DslEditorModeling::IDomainModelOwnable )
			{
				if( global::Tum.VModellXT.VModellXTDomainModel.DomainModelId == (element as DslEditorModeling::IDomainModelOwnable).GetDomainModelTypeId() )
					return new Tum.VModellXT.ViewModel.ModelTree.ModelTreeVModellXTViewModel(this.Store, element, link, domainRoleId, parent, bHookUpEvents, bCreateContextMenus, mainModelTreeVm); 
				if( global::Tum.VModellXT.Basis.VModellXTBasisDomainModel.DomainModelId == (element as DslEditorModeling::IDomainModelOwnable).GetDomainModelTypeId() )
					return new Tum.VModellXT.Basis.ViewModel.ModelTree.ModelTreeVModellXTBasisViewModel(this.Store, element, link, domainRoleId, parent, bHookUpEvents, bCreateContextMenus, mainModelTreeVm); 
				if( global::Tum.VModellXT.Statik.VModellXTStatikDomainModel.DomainModelId == (element as DslEditorModeling::IDomainModelOwnable).GetDomainModelTypeId() )
					return new Tum.VModellXT.Statik.ViewModel.ModelTree.ModelTreeVModellXTStatikViewModel(this.Store, element, link, domainRoleId, parent, bHookUpEvents, bCreateContextMenus, mainModelTreeVm); 
				if( global::Tum.VModellXT.Dynamik.VModellXTDynamikDomainModel.DomainModelId == (element as DslEditorModeling::IDomainModelOwnable).GetDomainModelTypeId() )
					return new Tum.VModellXT.Dynamik.ViewModel.ModelTree.ModelTreeVModellXTDynamikViewModel(this.Store, element, link, domainRoleId, parent, bHookUpEvents, bCreateContextMenus, mainModelTreeVm); 
				if( global::Tum.VModellXT.Anpassung.VModellXTAnpassungDomainModel.DomainModelId == (element as DslEditorModeling::IDomainModelOwnable).GetDomainModelTypeId() )
					return new Tum.VModellXT.Anpassung.ViewModel.ModelTree.ModelTreeVModellXTAnpassungViewModel(this.Store, element, link, domainRoleId, parent, bHookUpEvents, bCreateContextMenus, mainModelTreeVm); 
				if( global::Tum.VModellXT.Konventionsabbildungen.VModellXTKonventionsabbildungenDomainModel.DomainModelId == (element as DslEditorModeling::IDomainModelOwnable).GetDomainModelTypeId() )
					return new Tum.VModellXT.Konventionsabbildungen.ViewModel.ModelTree.ModelTreeVModellXTKonventionsabbildungenViewModel(this.Store, element, link, domainRoleId, parent, bHookUpEvents, bCreateContextMenus, mainModelTreeVm); 
				if( global::Tum.VModellXT.Aenderungsoperationen.VModellXTAenderungesoperationenDomainModel.DomainModelId == (element as DslEditorModeling::IDomainModelOwnable).GetDomainModelTypeId() )
					return new Tum.VModellXT.Aenderungsoperationen.ViewModel.ModelTree.ModelTreeVModellXTAenderungesoperationenViewModel(this.Store, element, link, domainRoleId, parent, bHookUpEvents, bCreateContextMenus, mainModelTreeVm); 
			}
			
			return new DslEditorViewModelModelTree::ModelElementTreeViewModel(this.Store, element, link, domainRoleId, parent, bHookUpEvents, bCreateContextMenus, mainModelTreeVm); 
		}
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">The store this view model belongs to.</param>
        /// <param name="element">Element to be hosted by this view model.</param>
		/// <param name="parentVM">Parent view model. Can be null.</param>
        public DomainPropertySpecificViewModel(DslEditorViewModelData::ViewModelStore viewModelStore, global::Tum.PDE.ModelingDSL.DomainProperty element, DslEditorViewModel::BaseModelElementViewModel parentVM)
            : this(viewModelStore, element, parentVM, true)
        {
		}
        public override DslEditorViewModelModelTree::BaseModelElementTreeViewModel CreateModelElementTreeViewModel(DslModeling::ModelElement modelElement, bool bHookUpEvents, bool bCreateContextMenus, DslEditorViewModel::MainModelTreeViewModel mainModelTreeVm)
		{
			if( modelElement is DslEditorModeling::IDomainModelOwnable )
			{
				if( global::Tum.FamilyTreeDSL.FamilyTreeDSLDomainModel.DomainModelId == (modelElement as DslEditorModeling::IDomainModelOwnable).GetDomainModelTypeId() )
					return new Tum.FamilyTreeDSL.ViewModel.ModelTree.ModelTreeFamilyTreeDSLViewModel(this.Store, modelElement, null, System.Guid.Empty, null, bHookUpEvents, bCreateContextMenus, mainModelTreeVm); 
			}
			
			
			
			return new DslEditorViewModelModelTree::ModelElementTreeViewModel(this.Store, modelElement, null, System.Guid.Empty, null, bHookUpEvents, bCreateContextMenus, mainModelTreeVm);
		}
		/// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">The store this view model belongs to.</param>
        /// <param name="element">Element to be hosted by this view model.</param>
		/// <param name="parentVM">Parent view model. Can be null.</param>
		/// <param name="bCallInitialize"></param>
        public DomainPropertySpecificViewModel(DslEditorViewModelData::ViewModelStore viewModelStore, global::Tum.PDE.ModelingDSL.DomainProperty element, DslEditorViewModel::BaseModelElementViewModel parentVM, bool bCallInitialize)
            : base(viewModelStore, element, parentVM, bCallInitialize)
        {
		}		
		public ModelTreeStateMachineLanguageViewModel(DslEditorViewModelData::ViewModelStore viewModelStore, DslModeling::ModelElement element, DslModeling::ElementLink link, System.Guid domainRoleId, DslEditorTreeViewModel::ModelElementTreeViewModel parent, bool bHookUpEvents, bool bCreateContextMenus, DslEditorViewModel::MainModelTreeViewModel mainModelTreeVm) 
			: base(viewModelStore, element, link, domainRoleId, parent, bHookUpEvents, bCreateContextMenus, mainModelTreeVm)
		{
		}
		/// <summary>
		/// Constuctor.
		/// </summary>
		/// <param name="viewModelStore">The store this view model belongs to.</param>
		/// <param name="modelContextName">Model context name.</param>
		public VSPluginDSLSpecificElementsDiagramTemplateSurfaceViewModel(DslEditorViewModels.Data.ViewModelStore viewModelStore, string modelContextName)
		    : base(viewModelStore, modelContextName)
		{
		}