// Generate an enum for each DomainEnumeration in the model
private void GenerateDomainEnumerationInternal(MetaModel dm, DomainEnumeration domainEnum) 
{
	if(!string.IsNullOrEmpty(domainEnum.Namespace))
	{

        
        #line default
        #line hidden
        
        #line 16 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("namespace ");

        
        #line default
        #line hidden
        
        #line 17 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Namespace));

        
        #line default
        #line hidden
        
        #line 17 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("\r\n{\r\n");

        
        #line default
        #line hidden
        
        #line 19 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

		PushIndent("\t");
	}

        
        #line default
        #line hidden
        
        #line 22 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("/// <summary>\r\n/// DomainEnumeration: ");

        
        #line default
        #line hidden
        
        #line 24 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 24 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("\r\n");

        
        #line default
        #line hidden
        
        #line 25 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

	this.Write(Utilities.Instance.GenerateComments(domainEnum.Description));

        
        #line default
        #line hidden
        
        #line 27 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("/// </summary>\r\n[System.ComponentModel.TypeConverter(typeof(");

        
        #line default
        #line hidden
        
        #line 29 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 29 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("EnumConverter))]\r\n");

        
        #line default
        #line hidden
        
        #line 30 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

	if(domainEnum.IsFlags)
	{

        
        #line default
        #line hidden
        
        #line 33 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("[global::System.Flags]\r\n");

        
        #line default
        #line hidden
        
        #line 35 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

	}	

        
        #line default
        #line hidden
        
        #line 38 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetAccessModifier(domainEnum.AccessModifier)));

        
        #line default
        #line hidden
        
        #line 38 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(" enum ");

        
        #line default
        #line hidden
        
        #line 38 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 38 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("\r\n{\r\n");

        
        #line default
        #line hidden
        
        #line 40 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

	double startVal = 1;
	foreach(EnumerationLiteral literal in domainEnum.Literals)
	{

        
        #line default
        #line hidden
        
        #line 44 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("\t/// <summary>\r\n\t/// ");

        
        #line default
        #line hidden
        
        #line 46 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(literal.Name));

        
        #line default
        #line hidden
        
        #line 46 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("\r\n");

        
        #line default
        #line hidden
        
        #line 47 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

		PushIndent("\t");
		this.Write(Utilities.Instance.GenerateComments(literal.Description));
		PopIndent();

        
        #line default
        #line hidden
        
        #line 51 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("\t/// </summary>\r\n");

        
        #line default
        #line hidden
        
        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

		PushIndent("\t");
		this.Write(Utilities.Instance.GenerateResourceAttributes(literal));
		PopIndent();
		
		if(literal.Value.Trim() != string.Empty)
		{

        
        #line default
        #line hidden
        
        #line 60 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("\t");

        
        #line default
        #line hidden
        
        #line 61 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(literal.Name));

        
        #line default
        #line hidden
        
        #line 61 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(" = ");

        
        #line default
        #line hidden
        
        #line 61 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(literal.Value));

        
        #line default
        #line hidden
        
        #line 61 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(",\r\n");

        
        #line default
        #line hidden
        
        #line 62 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

		}
		else
		{
			if( domainEnum.IsFlags )
			{

        
        #line default
        #line hidden
        
        #line 68 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("\t");

        
        #line default
        #line hidden
        
        #line 69 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(literal.Name));

        
        #line default
        #line hidden
        
        #line 69 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(" = ");

        
        #line default
        #line hidden
        
        #line 69 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(startVal.ToString()));

        
        #line default
        #line hidden
        
        #line 69 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(",\r\n");

        
        #line default
        #line hidden
        
        #line 70 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

				startVal = startVal * 2;
			}
			else
			{

        
        #line default
        #line hidden
        
        #line 75 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("\t");

        
        #line default
        #line hidden
        
        #line 76 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(literal.Name));

        
        #line default
        #line hidden
        
        #line 76 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(",\r\n");

        
        #line default
        #line hidden
        
        #line 77 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

			}
		}
	}

        
        #line default
        #line hidden
        
        #line 81 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("}\r\n/// <summary>\r\n/// Type converter for ");

        
        #line default
        #line hidden
        
        #line 84 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 84 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(" enumeration.\r\n/// </summary>\r\npublic class ");

        
        #line default
        #line hidden
        
        #line 86 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 86 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("EnumConverter : System.ComponentModel.EnumConverter\r\n{\r\n\tSystem.Collections.Gener" +
        "ic.Dictionary<");

        
        #line default
        #line hidden
        
        #line 88 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 88 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(", string> dictionary;\r\n\t\r\n\t/// <summary>\r\n    /// Constructor.\r\n    /// </summary" +
        ">\r\n    public ");

        
        #line default
        #line hidden
        
        #line 93 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 93 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("EnumConverter() : base(typeof(");

        
        #line default
        #line hidden
        
        #line 93 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 93 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("))\r\n    {\r\n        // create lookup dictionary\r\n        dictionary = new System.C" +
        "ollections.Generic.Dictionary<");

        
        #line default
        #line hidden
        
        #line 96 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 96 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(", string>();\r\n");

        
        #line default
        #line hidden
        
        #line 97 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

		foreach(EnumerationLiteral literal in domainEnum.Literals)
		{
			string resourceKey = domainEnum.GetFullName(false)+"/"+literal.Name;

        
        #line default
        #line hidden
        
        #line 101 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("\t\tdictionary.Add(");

        
        #line default
        #line hidden
        
        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(literal.Name));

        
        #line default
        #line hidden
        
        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(", ");

        
        #line default
        #line hidden
        
        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("DomainModel.SingletonResourceManager.GetString(\"");

        
        #line default
        #line hidden
        
        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(resourceKey));

        
        #line default
        #line hidden
        
        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(".DisplayName\"));\r\n");

        
        #line default
        #line hidden
        
        #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

		}

        
        #line default
        #line hidden
        
        #line 105 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("    }\r\n\r\n\t/// <summary>\r\n    /// Converts the specified value object to ");

        
        #line default
        #line hidden
        
        #line 109 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 109 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(@".
    /// </summary>
    /// <param name=""context"">An System.ComponentModel.ITypeDescriptorContext that provides a format context.</param>
    /// <param name=""culture"">An optional System.Globalization.CultureInfo. If not supplied, the current culture is assumed.</param>
    /// <param name=""value"">The System.Object to convert.</param>
    /// <returns>");

        
        #line default
        #line hidden
        
        #line 114 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 114 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(@" object that represents the converted value.</returns>
    public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
    {
		string strValue = value as string;
		if( strValue != null )
		{
			foreach(");

        
        #line default
        #line hidden
        
        #line 120 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 120 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(@" d in dictionary.Keys )
			{
				if( dictionary[d] == strValue )
					return d;
			}

		}
        return base.ConvertFrom(context, culture, value);
    }

	/// <summary>
    /// Converts the given value object to the specified destination type.
    /// </summary>
    /// <param name=""context"">An System.ComponentModel.ITypeDescriptorContext that provides a format context.</param>
    /// <param name=""culture"">An optional System.Globalization.CultureInfo. If not supplied, the current culture is assumed.</param>
    /// <param name=""value""> System.Object to convert.</param>
    /// <param name=""destinationType"">The System.Type to convert the value to.</param>
    /// <returns>An System.Object that represents the converted value.</returns>
    public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, System.Type destinationType)
    {
		");

        
        #line default
        #line hidden
        
        #line 140 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 140 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("? strValue = value as ");

        
        #line default
        #line hidden
        
        #line 140 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainEnum.Name));

        
        #line default
        #line hidden
        
        #line 140 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("?;\r\n\t\tif( strValue != null )\r\n\t\t{\r\n\t\t\treturn dictionary[strValue.Value];\r\n\t\t}\r\n\r\n" +
        "        return base.ConvertTo(context, culture, value, destinationType);\r\n    }\r" +
        "\n}\r\n");

        
        #line default
        #line hidden
        
        #line 149 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

	if(!string.IsNullOrEmpty(domainEnum.Namespace))
	{
		PopIndent();

        
        #line default
        #line hidden
        
        #line 153 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"
this.Write("}\r\n");

        
        #line default
        #line hidden
        
        #line 155 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

	}

        
        #line default
        #line hidden
        
        #line 158 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainEnumerationGenerator.tt"

}
public void GenerateSerializationHelper(MetaModel dm)
{

        
        #line default
        #line hidden
        
        #line 19 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("namespace ");

        
        #line default
        #line hidden
        
        #line 20 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Namespace));

        
        #line default
        #line hidden
        
        #line 20 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\r\n{\r\n\tpartial class ");

        
        #line default
        #line hidden
        
        #line 22 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 22 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"DomainModel
	{
		///<Summary>
		/// Provide an implementation of the partial method to set up the serialization behavior for this model.
		///</Summary>
		///<remarks>
		/// This partial method is called from the constructor of the domain class.
		///</remarks>
		[System.Diagnostics.CodeAnalysis.SuppressMessage(""Microsoft.Performance"",""CA1822:MarkMembersAsStatic"", Justification=""Alternative implementations might need to reference instance variables, so not marked as static."")]
		partial void InitializeSerialization(DslModeling::Store store)
		{
			// Register the serializers and moniker resolver for this model
			 ");

        
        #line default
        #line hidden
        
        #line 34 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 34 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelper.Instance.InitializeSerialization(store);\t\r\n\t\t}\r\n\t}\r\n}\r\n\r\nname" +
        "space ");

        
        #line default
        #line hidden
        
        #line 39 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Namespace));

        
        #line default
        #line hidden
        
        #line 39 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\r\n{\r\n\t\t\r\n\t/// <summary>\r\n\t/// Helper class for serializing and deserializing ");

        
        #line default
        #line hidden
        
        #line 43 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 43 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" models.\r\n\t/// </summary>\r\n\tpublic abstract partial class ");

        
        #line default
        #line hidden
        
        #line 45 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 45 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelperBase : DslEditorModeling::SerializationHelper\r\n\t{\r\n\t\t#region C" +
        "onstructor\r\n\t\t/// <summary>\r\n\t\t/// Constructor\r\n\t\t/// </summary>\r\n\t\tprotected ");

        
        #line default
        #line hidden
        
        #line 51 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 51 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"SerializationHelperBase() { }
		#endregion
		
		#region Methods
		/// <summary>
        /// Write schema definitions.
        /// </summary>
        /// <param name=""writer"">XmlWriter to write serialized data to.</param>
		/// <param name=""modelContextName"">Name of the model context.</param>
		/// <param name=""domainModelName"">Name of the domain model.</param>
        public virtual void WriteSchemaDefinitions(global::System.Xml.XmlWriter writer, string modelContextName, string domainModelName)
        {
");

        
        #line default
        #line hidden
        
        #line 63 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

	
	foreach(PropertyGridEditor p in this.MetaModel.PropertyGridEditors)
	{
		if( p.Name == "ReferencedModelRoleViewModel" && 
			p.Namespace == "Tum.PDE.ToolFramework.Modeling.Visualization.VMXExtensions.Path" )
		{

        
        #line default
        #line hidden
        
        #line 70 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("            writer.WriteAttributeString(\"xmlns\", \"xi\", null, \"http://www.w3.org/2" +
        "001/XInclude\");\r\n            writer.WriteAttributeString(\"xmlns\", \"xsi\", null, \"" +
        "http://www.w3.org/2001/XMLSchema-instance\");\t\t\t\r\n");

        
        #line default
        #line hidden
        
        #line 73 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

			break;
			
		}
	}	

        
        #line default
        #line hidden
        
        #line 78 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("        }\r\n\t\t\r\n\t\t/// <summary>\r\n\t\t/// Return the directory of serializers to use\r" +
        "\n\t\t/// </summary>\r\n\t\tprotected virtual DslModeling::DomainXmlSerializerDirectory" +
        " GetDirectory(DslModeling::Store store)\r\n\t\t{\r\n\t\t\t// Just return the default seri" +
        "alization directory from the store\r\n\t\t\treturn store.SerializerDirectory;\r\n\t\t}\t\t\r" +
        "\n\t\r\n\t\t/// <Summary>\r\n\t\t/// Called by the serialization helper to allow any neces" +
        "sary setup to be done on each load / save.\r\n\t\t/// </Summary>\r\n\t\t/// <param name=" +
        "\"partition\">The partition being serialized.</param>\r\n\t\t/// <param name=\"serializ" +
        "ationContext\">The current serialization context instance.</param>\r\n\t\t/// <param " +
        "name=\"isLoading\">Flag to indicate whether the file is being loaded or saved.</pa" +
        "ram>\r\n\t\t/// <Remarks>The base implementation does nothing</Remarks>\r\n\t\tprotected" +
        " virtual void InitializeSerializationContext(DslModeling::Partition partition, D" +
        "slModeling::SerializationContext serializationContext, bool isLoading)\r\n\t\t{\r\n\t\t}" +
        "\r\n\t\t\r\n\t\t/// <summary>\r\n\t\t/// Attempts to return the encoding used by the reader." +
        "\r\n\t\t/// </summary>\r\n\t\t/// <remarks>\r\n\t\t/// The reader will be positioned at the " +
        "start of the document when calling this method.\r\n\t\t/// </remarks>\r\n\t\tprotected v" +
        "irtual bool TryGetEncoding(global::System.Xml.XmlReader reader, out global::Syst" +
        "em.Text.Encoding encoding)\r\n\t\t{\r\n\t\t\tglobal::System.Diagnostics.Debug.Assert(read" +
        "er.NodeType == System.Xml.XmlNodeType.XmlDeclaration, \"reader should be at the X" +
        "mlDeclaration node when calling this method\");\r\n\t\r\n\t\t\tencoding = null;\r\n\t\t\t// At" +
        "tempt to read and parse the \"encoding\" attribute from the XML declaration node\r\n" +
        "\t\t\tif (reader.NodeType == global::System.Xml.XmlNodeType.XmlDeclaration)\r\n\t\t\t{\r\n" +
        "\t\t\t\tstring encodingName = reader.GetAttribute(\"encoding\");\r\n\t\t\t\tif (!string.IsNu" +
        "llOrWhiteSpace(encodingName))\r\n\t\t\t\t{\r\n\t\t\t\t\tencoding = global::System.Text.Encodi" +
        "ng.GetEncoding(encodingName);\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r" +
        "\n\t\t}\r\n\t\t\r\n\t\t/// <summary>\r\n\t\t/// Creates and returns the settings used when read" +
        "ing a file.\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"serializationContext\">The curr" +
        "ent serialization context instance.</param>\r\n\t\t/// <param name=\"isDiagram\">Indic" +
        "ates whether a diagram or model file is currently being serialized.</param>\r\n\t\ti" +
        "nternal virtual global::System.Xml.XmlReaderSettings CreateXmlReaderSettings(Dsl" +
        "Modeling::SerializationContext serializationContext, bool isDiagram)\r\n\t\t{\r\n\t\t\tre" +
        "turn new global::System.Xml.XmlReaderSettings();\r\n\t\t}\r\n\t\t\r\n\t\t/// <summary>\r\n\t\t//" +
        "/ Creates and returns the settings used when writing a file.\r\n\t\t/// </summary>\r\n" +
        "\t\t/// <param name=\"serializationContext\">The current serialization context insta" +
        "nce.</param>\r\n\t\t/// <param name=\"isDiagram\">Indicates whether a diagram or model" +
        " file is currently being serialized.</param>\r\n\t\t/// <param name=\"encoding\">The e" +
        "ncoding to use when writing the file.</param>\r\n\t\tinternal virtual global::System" +
        ".Xml.XmlWriterSettings CreateXmlWriterSettings(DslModeling::SerializationContext" +
        " serializationContext, bool isDiagram, global::System.Text.Encoding encoding)\r\n\t" +
        "\t{\r\n\t\t\tglobal::System.Xml.XmlWriterSettings settings = new global::System.Xml.Xm" +
        "lWriterSettings();\r\n\t\t\tsettings.Indent = true;\r\n\t\t\tsettings.Encoding = encoding;" +
        "\r\n\t        settings.CheckCharacters = true;\r\n\r\n\t\t\treturn settings;\r\n\t\t}\r\n\t\t\r\n\t\t/" +
        "// <summary>\r\n        /// This method is called to copy any existing validation " +
        "messages (that were added during conversion).\r\n        /// </summary>\r\n\t\t/// <pa" +
        "ram name=\"serializationContext\">The current serialization context instance.</par" +
        "am>\r\n\t\t/// <param name=\"validatable\">Class that can be validated.</param>\r\n\t\tpub" +
        "lic virtual void CopyValidationMessages(DslModeling::SerializationContext serial" +
        "izationContext, DslEditorModeling::IValidatable validatable)\r\n\t\t{\r\n\t\t\tforeach(Ds" +
        "lEditorModeling::IValidationMessage message in validatable.ValidationResult)\r\n\t\t" +
        "\t{\r\n                DslModeling.SerializationMessageKind kind = DslModeling.Seri" +
        "alizationMessageKind.Error;\r\n                if (message.Type == DslEditorModeli" +
        "ng.ModelValidationViolationType.Message)\r\n                    kind = DslModeling" +
        ".SerializationMessageKind.Info;\r\n                else if (message.Type == DslEdi" +
        "torModeling.ModelValidationViolationType.Warning)\r\n                    kind = Ds" +
        "lModeling.SerializationMessageKind.Warning;\r\n\t\t\t    \r\n\t\t\t\tserializationContext.R" +
        "esult.AddMessage(new DslModeling.SerializationMessage(kind,\r\n                   " +
        " message.Description, validatable.ToString(), 0, 0, null));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/// " +
        "<summary>\r\n        /// This method is called during deserialization to convert a" +
        " given value to a specific typed value.\r\n        /// </summary>\r\n\t\t/// <param na" +
        "me=\"serializationContext\">The current serialization context instance.</param>\r\n\t" +
        "\t/// <param name=\"modelELement\">ModdelElement, to which the property belongs to." +
        "</param>\r\n\t\t/// <param name=\"propertyName\">The Property name, which value is to " +
        "be converted.</param>\r\n        /// <param name=\"value\">Value to convert.</param>" +
        "\r\n        /// <param name=\"targetType\">Type, the object is to be converted to.</" +
        "param>\r\n\t\t/// <param name=\"isRequired\">True if this property is marked as requir" +
        "ed in the domain model. Can be null.</param>\r\n        /// <returns>Converted val" +
        "ue.</returns>\r\n\t\tpublic virtual object ConvertTypedObjectFrom(DslModeling::Seria" +
        "lizationContext serializationContext, DslModeling::ModelElement modelELement, st" +
        "ring propertyName, object value, System.Type targetType, bool? isRequired)\r\n\t\t{\r" +
        "\n");

        
        #line default
        #line hidden
        
        #line 183 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

			foreach(DomainType type in this.MetaModel.DomainTypes )
			{
				if( type.RequiresSerializationConversion )
				{

        
        #line default
        #line hidden
        
        #line 188 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" \t\t\tif (targetType == typeof(");

        
        #line default
        #line hidden
        
        #line 189 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 189 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("))\r\n\t\t\t{\r\n\t\t\t\treturn ConvertTypedObject");

        
        #line default
        #line hidden
        
        #line 191 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetDomainTypeCodeName(type)));

        
        #line default
        #line hidden
        
        #line 191 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("From(serializationContext, modelELement, propertyName, value, targetType, isRequi" +
        "red);\r\n\t\t\t}\r\n");

        
        #line default
        #line hidden
        
        #line 193 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

				}
				else if( type is DomainEnumeration )
				{

        
        #line default
        #line hidden
        
        #line 197 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\tif( targetType == typeof(");

        
        #line default
        #line hidden
        
        #line 198 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 198 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("?) && value != null )\r\n\t\t\t{\r\n\t\t\t\tstring strValue = value.ToString();\r\n\t\t\t\tswitch(" +
        "strValue)\r\n\t\t\t\t{\r\n");

        
        #line default
        #line hidden
        
        #line 203 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

					foreach(EnumerationLiteral literal in (type as DomainEnumeration).Literals )
					{

        
        #line default
        #line hidden
        
        #line 206 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\t\t\tcase \"");

        
        #line default
        #line hidden
        
        #line 207 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(literal.SerializationName));

        
        #line default
        #line hidden
        
        #line 207 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\":\r\n\t\t\t\t\t\treturn ");

        
        #line default
        #line hidden
        
        #line 208 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 208 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 208 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(literal.Name));

        
        #line default
        #line hidden
        
        #line 208 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(";\r\n");

        
        #line default
        #line hidden
        
        #line 209 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

					}

        
        #line default
        #line hidden
        
        #line 211 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t//throw new System.NotSupportedException(\"Can not convert " +
        "\" + strValue + \" to type ");

        
        #line default
        #line hidden
        
        #line 214 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.Name));

        
        #line default
        #line hidden
        
        #line 214 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\");\r\n\t\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n");

        
        #line default
        #line hidden
        
        #line 218 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

				}
				if( !type.RequiresSerializationConversion && type.Name == "Boolean?" )
				{

        
        #line default
        #line hidden
        
        #line 222 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\tif (targetType == typeof(global::System.Boolean?) && value is string)\r\n       " +
        "     {\r\n                if (System.String.IsNullOrEmpty(value as string))\r\n     " +
        "               return null;\r\n\r\n                if (System.String.IsNullOrWhiteSp" +
        "ace(value as string))\r\n                    return null;\r\n\r\n                try\r\n" +
        "                {\r\n                    System.Boolean? d = System.Convert.ToBool" +
        "ean(value, System.Globalization.CultureInfo.InvariantCulture);\r\n                " +
        "    return d;\r\n                }\r\n                catch (System.Exception ex)\r\n " +
        "               {\r\n                    serializationContext.Result.AddMessage(new" +
        " DslModeling::SerializationMessage(\r\n                         DslModeling::Seria" +
        "lizationMessageKind.Error, \"Couldnt convert \" + value + \" to Boolean: \" + ex.ToS" +
        "tring(), \"\", 0, 0, null));\r\n                }\r\n            }\r\n\t\t\tif (targetType " +
        "== typeof(global::System.Guid?) && value is string)\r\n            {\r\n\t\t\t\tif (Syst" +
        "em.String.IsNullOrEmpty(value as string))\r\n                    return null;\r\n\r\n " +
        "               if (System.String.IsNullOrWhiteSpace(value as string))\r\n         " +
        "           return null;\r\n\t\t\t\t\r\n                try\r\n                {\r\n         " +
        "           System.Guid? d = new System.Guid(value as string);\r\n                 " +
        "   return d;\r\n                }\r\n                catch (System.Exception ex)\r\n  " +
        "              {\r\n                    serializationContext.Result.AddMessage(new " +
        "DslModeling::SerializationMessage(\r\n                         DslModeling::Serial" +
        "izationMessageKind.Error, \"Couldnt convert \" + value + \" to Guid: \" + ex.ToStrin" +
        "g(), \"\", 0, 0, null));\r\n                }\r\n\t\t\t}\r\n");

        
        #line default
        #line hidden
        
        #line 261 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

				}
			}

        
        #line default
        #line hidden
        
        #line 264 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"
			return value;
		}
		
		/// <summary>
        /// This method is called during serialization to convert a given typed value to a specific value.
        /// </summary>
		/// <param name=""serializationContext"">The current serialization context instance.</param>
		/// <param name=""modelELement"">ModdelElement, to which the property belongs to.</param>
		/// <param name=""propertyName"">The Property name, which value is to be converted.</param>
        /// <param name=""value"">Typed value to convert.</param>
        /// <param name=""sourceType"">Type of the value.</param>
		/// <param name=""isRequired"">True if this property is marked as required in the domain model. Can be null.</param>
        /// <returns>Converted value.</returns>
		public virtual object ConvertTypedObjectTo(DslModeling::SerializationContext serializationContext, DslModeling::ModelElement modelELement, string propertyName, object value, System.Type sourceType, bool? isRequired)
		{
");

        
        #line default
        #line hidden
        
        #line 281 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

			foreach(DomainType type in this.MetaModel.DomainTypes )
			{
				if( type.RequiresSerializationConversion )
				{

        
        #line default
        #line hidden
        
        #line 286 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" \t\t\tif (sourceType == typeof(");

        
        #line default
        #line hidden
        
        #line 287 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 287 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("))\r\n            {\r\n\t\t\t\treturn ConvertTypedObject");

        
        #line default
        #line hidden
        
        #line 289 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetDomainTypeCodeName(type)));

        
        #line default
        #line hidden
        
        #line 289 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("To(serializationContext, modelELement, propertyName, value, sourceType, isRequire" +
        "d);\r\n\t\t\t}\r\n");

        
        #line default
        #line hidden
        
        #line 291 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

				}
				else if( type is DomainEnumeration )
				{

        
        #line default
        #line hidden
        
        #line 295 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\tif( sourceType == typeof(");

        
        #line default
        #line hidden
        
        #line 296 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 296 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("?) && value != null )\r\n\t\t\t{\r\n\t\t\t\t");

        
        #line default
        #line hidden
        
        #line 298 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 298 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("? strValue = value as ");

        
        #line default
        #line hidden
        
        #line 298 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 298 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("?;\r\n\t\t\t\tif( strValue != null )\r\n\t\t\t\t\tswitch(strValue)\r\n\t\t\t\t\t{\r\n");

        
        #line default
        #line hidden
        
        #line 302 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

					foreach(EnumerationLiteral literal in (type as DomainEnumeration).Literals )
					{

        
        #line default
        #line hidden
        
        #line 305 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\t\t\t\tcase ");

        
        #line default
        #line hidden
        
        #line 306 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 306 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 306 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(literal.Name));

        
        #line default
        #line hidden
        
        #line 306 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(":\r\n\t\t\t\t\t\t\treturn \"");

        
        #line default
        #line hidden
        
        #line 307 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(literal.SerializationName));

        
        #line default
        #line hidden
        
        #line 307 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\";\r\n");

        
        #line default
        #line hidden
        
        #line 308 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

					}

        
        #line default
        #line hidden
        
        #line 310 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tthrow new System.NotSupportedException(\"Value of type ");

        
        #line default
        #line hidden
        
        #line 313 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.Name));

        
        #line default
        #line hidden
        
        #line 313 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" is unknown.\");\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n");

        
        #line default
        #line hidden
        
        #line 316 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

				}
				if( !type.RequiresSerializationConversion && type.Name == "Boolean?" )
				{

        
        #line default
        #line hidden
        
        #line 320 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"			if (sourceType == typeof(global::System.Boolean?) && value != null)
            {
                if (value is System.Boolean)
                {
                    return ((System.Boolean)value).ToString(System.Globalization.CultureInfo.InvariantCulture);
                }
            }
			if (sourceType == typeof(global::System.Guid?) && value != null)
            {
                if (value is System.Guid)
                {
                    return ((System.Guid)value).ToString();
                }
            }			
");

        
        #line default
        #line hidden
        
        #line 335 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

				}
			}

        
        #line default
        #line hidden
        
        #line 338 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\t\r\n");

        
        #line default
        #line hidden
        
        #line 342 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

			foreach(DomainType type in this.MetaModel.DomainTypes )
			{
				if( type.RequiresSerializationConversion )
				{
					string typeName = CodeGenerationUtilities.GetDomainTypeCodeName(type);

        
        #line default
        #line hidden
        
        #line 348 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t/// <summary>\r\n        /// This method is called during deserialization to conv" +
        "ert a given value to a specific typed value (");

        
        #line default
        #line hidden
        
        #line 350 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.Name));

        
        #line default
        #line hidden
        
        #line 350 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@").
        /// </summary>
		/// <param name=""serializationContext"">The current serialization context instance.</param>
		/// <param name=""modelELement"">ModdelElement, to which the property belongs to.</param>
		/// <param name=""propertyName"">The Property name, which value is to be converted.</param>
        /// <param name=""value"">Value to convert.</param>
        /// <param name=""targetType"">Type, the object is to be converted to.</param>
		/// <param name=""isRequired"">True if this property is marked as required in the domain model. Can be null.</param>
        /// <returns>Converted value.</returns>
		public abstract ");

        
        #line default
        #line hidden
        
        #line 359 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 359 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" ConvertTypedObject");

        
        #line default
        #line hidden
        
        #line 359 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(typeName));

        
        #line default
        #line hidden
        
        #line 359 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"From(DslModeling::SerializationContext serializationContext, DslModeling::ModelElement modelELement, string propertyName, object value, System.Type targetType, bool? isRequired);
		
		/// <summary>
        /// This method is called during serialization to convert a given typed value (");

        
        #line default
        #line hidden
        
        #line 362 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(type.Name));

        
        #line default
        #line hidden
        
        #line 362 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@") to a specific value (string).
        /// </summary>
		/// <param name=""serializationContext"">The current serialization context instance.</param>
		/// <param name=""modelELement"">ModdelElement, to which the property belongs to.</param>
		/// <param name=""propertyName"">The Property name, which value is to be converted.</param>
        /// <param name=""value"">Typed value to convert.</param>
        /// <param name=""sourceType"">Type of the value.</param>
		/// <param name=""isRequired"">True if this property is marked as required in the domain model. Can be null.</param>
        /// <returns>Converted value.</returns>		
		public abstract object ConvertTypedObject");

        
        #line default
        #line hidden
        
        #line 371 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(typeName));

        
        #line default
        #line hidden
        
        #line 371 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("To(DslModeling::SerializationContext serializationContext, DslModeling::ModelElem" +
        "ent modelELement, string propertyName, object value, System.Type sourceType, boo" +
        "l? isRequired);\r\n\r\n");

        
        #line default
        #line hidden
        
        #line 373 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

				}
			}

        
        #line default
        #line hidden
        
        #line 376 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\r\n\t\t/// <summary>\r\n        /// This method is called during deserialization to " +
        "convert a given id as string to the id of type Guid as used by the domain model." +
        "\r\n        /// </summary>\r\n\t\t/// <param name=\"serializationContext\">The current s" +
        "erialization context instance.</param>\r\n        /// <param name=\"id\">Id as  stri" +
        "ng.</param>\r\n        /// <returns>Converted value, Id as Guid.</returns>\r\n\t\tpubl" +
        "ic virtual System.Guid ConvertIdFrom(DslModeling::SerializationContext serializa" +
        "tionContext, string id)\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\treturn new System.Guid(id);\r\n\t\t\t" +
        "}\r\n\t\t\tcatch(System.Exception ex)\r\n            {\r\n                serializationCo" +
        "ntext.Result.AddMessage(new DslModeling::SerializationMessage(\r\n                " +
        "     DslModeling::SerializationMessageKind.Error, \"Couldnt convert \" + id + \" to" +
        " Guid: \" + ex.ToString(), \"\", 0, 0, null));\r\n\r\n                return System.Gui" +
        "d.Empty;\r\n            }\r\n\t\t}\r\n\t\t\r\n\t\t/// <summary>\r\n        /// This method is ca" +
        "lled during serialization to convert a given id to its specific string represent" +
        "ation.\r\n        /// </summary>\r\n\t\t/// <param name=\"serializationContext\">The cur" +
        "rent serialization context instance.</param>\r\n        /// <param name=\"id\">Id.</" +
        "param>\r\n        /// <returns>Converted value.</returns>\r\n\t\tpublic virtual string" +
        " ConvertIdTo(DslModeling::SerializationContext serializationContext, System.Guid" +
        " id)\r\n\t\t{\r\n\t\t\treturn id.ToString(\"D\");\r\n\t\t}\r\n\t\t\r\n\t\t/// <summary>\r\n\t\t/// Writes t" +
        "he specified element to the file.\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"serializ" +
        "ationContext\">The current serialization context instance.</param>\r\n\t\t/// <param " +
        "name=\"element\">The element whose attributes have just been written.</param>\r\n\t\t/" +
        "// <param name=\"writer\">XmlWriter to write serialized data to.</param>\r\n\t\t/// <p" +
        "aram name=\"elementName\">Name of the element to be written.</param>\r\n\t\t/// <param" +
        " name=\"elementValue\">Value of the element to be written.</param>\r\n\t\t/// <remarks" +
        ">This is an extension point to allow customisation e.g. to encode the data\r\n\t\t//" +
        "/ being written to the file.</remarks>\r\n\t\tinternal virtual void WriteElementStri" +
        "ng(DslModeling::SerializationContext serializationContext, DslModeling::ModelEle" +
        "ment element, global::System.Xml.XmlWriter writer, string elementName, string el" +
        "ementValue)\r\n\t\t{\r\n\t\t\twriter.WriteElementString(elementName, elementValue);\r\n\t\t}\r" +
        "\n\t\t\r\n\t\tinternal virtual void WriteElementCDATAString(DslModeling::SerializationC" +
        "ontext serializationContext, DslModeling::ModelElement element, global::System.X" +
        "ml.XmlWriter writer, string elementName, string elementValue)\r\n\t\t{\r\n\t\t\twriter.Wr" +
        "iteStartElement(elementName);\r\n            writer.WriteCData(elementValue);\r\n   " +
        "         writer.WriteEndElement();\r\n\t\t}\r\n\t\t\r\n\t\t/// <summary>\r\n\t\t/// Writes the s" +
        "pecified attribute to the file.\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"serializat" +
        "ionContext\">The current serialization context instance.</param>\r\n\t\t/// <param na" +
        "me=\"element\">The element whose attributes have just been written.</param>\r\n\t\t///" +
        " <param name=\"writer\">XmlWriter to write serialized data to.</param>\r\n\t\t/// <par" +
        "am name=\"attributeName\">Name of the attribute to be written</param>\r\n\t\t/// <para" +
        "m name=\"attributeValue\">Value of the attribute to be written</param>\r\n\t\t/// <rem" +
        "arks>This is an extension point to allow customisation e.g. to encode the data\r\n" +
        "\t\t/// being written to the file.</remarks>\r\n\t\tpublic virtual void WriteAttribute" +
        "String(DslModeling::SerializationContext serializationContext, DslModeling::Mode" +
        "lElement element, global::System.Xml.XmlWriter writer, string attributeName, str" +
        "ing attributeValue)\r\n\t\t{\r\n\t\t\twriter.WriteAttributeString(attributeName, attribut" +
        "eValue);\r\n\t\t}\r\n\t\t\r\n\t\t/// <summary>\r\n\t\t/// Reads and returns the value of an attr" +
        "ibute.\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"serializationContext\">The current s" +
        "erialization context instance.</param>\r\n\t\t/// <param name=\"element\">The element " +
        "whose attributes have just been written.</param>\r\n\t\t/// <param name=\"reader\">Xml" +
        "Reader to read the serialized data from.</param>\r\n\t\t/// <param name=\"attributeNa" +
        "me\">The name of the attribute to be read.</param>\r\n\t\t/// <returns>The value of t" +
        "he attribute.</returns>\r\n\t\t/// <remarks>This is an extension point to allow cust" +
        "omisation e.g. to decode the data\r\n\t\t/// being written to the file.</remarks>\r\n\t" +
        "\tpublic virtual string ReadAttribute(DslModeling::SerializationContext serializa" +
        "tionContext, DslModeling::ModelElement element, global::System.Xml.XmlReader rea" +
        "der, string attributeName)\r\n\t\t{\r\n\t\t\treturn reader.GetAttribute(attributeName);\r\n" +
        "\t\t}\r\n\t\t\r\n\t\t/// <summary>\r\n\t\t/// Reads and returns the value of an element.\r\n\t\t//" +
        "/ </summary>\r\n\t\t/// <param name=\"serializationContext\">The current serialization" +
        " context instance.</param>\r\n\t\t/// <param name=\"element\">The element whose attrib" +
        "utes have just been written.</param>\r\n\t\t/// <param name=\"reader\">XmlReader to re" +
        "ad the serialized data from.</param>\r\n\t\t/// <returns>The value of the element.</" +
        "returns>\r\n\t\t/// <remarks>This is an extension point to allow customisation e.g. " +
        "to decode the data\r\n\t\t/// being written to the file.</remarks>\r\n\t\tpublic virtual" +
        " string ReadElementContentAsString(DslModeling::SerializationContext serializati" +
        "onContext, DslModeling::ModelElement element, global::System.Xml.XmlReader reade" +
        "r)\r\n\t\t{\r\n\t\t\treturn reader.ReadElementContentAsString();\r\n\t\t}\r\n\t\t\r\n\t\t/// <summary" +
        ">\r\n        /// Reads and returns the value of an cdata element.\r\n        /// </s" +
        "ummary>\r\n        /// <param name=\"serializationContext\">The current serializatio" +
        "n context instance.</param>\r\n        /// <param name=\"element\">The element whose" +
        " attributes have just been written.</param>\r\n        /// <param name=\"reader\">Xm" +
        "lReader to read the serialized data from.</param>\r\n        /// <returns>The valu" +
        "e of the element.</returns>\r\n        /// <remarks>This is an extension point to " +
        "allow customisation e.g. to decode the data being written to the file.</remarks>" +
        "\r\n\t\tpublic virtual string ReadElementCDATAContentAsString(DslModeling::Serializa" +
        "tionContext serializationContext, DslModeling::ModelElement element, global::Sys" +
        "tem.Xml.XmlReader reader)\r\n\t\t{\r\n\t\t\treturn reader.ReadElementContentAsString();\r\n" +
        "\t\t}\r\n\t\t\r\n        /// <summary>\r\n        /// Reads and returns the inner xml valu" +
        "e of an element.\r\n        /// </summary>\r\n        /// <param name=\"serialization" +
        "Context\">The current serialization context instance.</param>\r\n        /// <param" +
        " name=\"element\">The element whose attributes have just been written.</param>\r\n  " +
        "      /// <param name=\"reader\">XmlReader to read the serialized data from.</para" +
        "m>\r\n        /// <returns>The value of the element.</returns>\r\n        /// <remar" +
        "ks>This is an extension point to allow customisation e.g. to decode the data bei" +
        "ng written to the file.</remarks>\r\n        public virtual string ReadInnerXmlAsS" +
        "tring(DslModeling::SerializationContext serializationContext, DslModeling::Model" +
        "Element element, global::System.Xml.XmlReader reader)\r\n        {\r\n            re" +
        "turn reader.ReadInnerXml();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Rea" +
        "ds and returns the inner xml value (which is serialized as cdata) of an element." +
        "\r\n        /// </summary>\r\n        /// <param name=\"serializationContext\">The cur" +
        "rent serialization context instance.</param>\r\n        /// <param name=\"element\">" +
        "The element whose attributes have just been written.</param>\r\n        /// <param" +
        " name=\"reader\">XmlReader to read the serialized data from.</param>\r\n        /// " +
        "<returns>The value of the element.</returns>\r\n        /// <remarks>This is an ex" +
        "tension point to allow customisation e.g. to decode the data being written to th" +
        "e file.</remarks>\r\n        public virtual string ReadCDATAFromInnerXmlAsString(D" +
        "slModeling::SerializationContext serializationContext, DslModeling::ModelElement" +
        " element, global::System.Xml.XmlReader reader)\r\n        {\r\n            string in" +
        "nerXml = reader.ReadInnerXml();\r\n            if( innerXml.Length > 9 )\r\n        " +
        "    {\r\n\r\n                if (innerXml.Substring(0, 9) == \"<![CDATA[\" && innerXml" +
        ".Substring(innerXml.Length - 3, 3) == \"]]>\")\r\n                {\r\n               " +
        "     return innerXml.Substring(9, innerXml.Length - 12);\r\n                }\r\n   " +
        "         }\r\n\r\n            return innerXml;\r\n        }\r\n\t\r\n\t\t/// <summary>\r\n     " +
        "   /// Writes the specified string as the elements content to the file.\r\n       " +
        " /// </summary>\r\n        /// <param name=\"serializationContext\">The current seri" +
        "alization context instance.</param>\r\n        /// <param name=\"element\">The eleme" +
        "nt whose attributes have just been written.</param>\r\n        /// <param name=\"wr" +
        "iter\">XmlWriter to write serialized data to.</param>\r\n        /// <param name=\"a" +
        "ttributeName\">Name of the attribute to be written</param>\r\n        /// <param na" +
        "me=\"attributeValue\">Value of the attribute to be written</param>\r\n        /// <r" +
        "emarks>This is an extension point to allow customisation e.g. to encode the data" +
        "\r\n        /// being written to the file.</remarks>\r\n        public virtual void " +
        "WriteInnerXmlAsString(DslModeling::SerializationContext serializationContext, Ds" +
        "lModeling::ModelElement element, global::System.Xml.XmlWriter writer, string att" +
        "ributeName, string attributeValue)\r\n        {\r\n            writer.WriteValue(att" +
        "ributeValue);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Writes the specif" +
        "ied string as the elements content (formatted as CDATA) to the file.\r\n        //" +
        "/ </summary>\r\n        /// <param name=\"serializationContext\">The current seriali" +
        "zation context instance.</param>\r\n        /// <param name=\"element\">The element " +
        "whose attributes have just been written.</param>\r\n        /// <param name=\"write" +
        "r\">XmlWriter to write serialized data to.</param>\r\n        /// <param name=\"attr" +
        "ibuteName\">Name of the attribute to be written</param>\r\n        /// <param name=" +
        "\"attributeValue\">Value of the attribute to be written</param>\r\n        /// <rema" +
        "rks>This is an extension point to allow customisation e.g. to encode the data\r\n " +
        "       /// being written to the file.</remarks>\r\n        public virtual void Wri" +
        "teCDATAFromInnerXmlAsString(DslModeling::SerializationContext serializationConte" +
        "xt, DslModeling::ModelElement element, global::System.Xml.XmlWriter writer, stri" +
        "ng attributeName, string attributeValue)\r\n        {\r\n            writer.WriteCDa" +
        "ta(attributeValue);\r\n        }\t\r\n\t\t#endregion\r\n\t\t\r\n\t\t#region Initialization\r\n\t\t\r" +
        "\n\t\t/// <summary>\r\n\t\t/// Ensure that moniker resolvers and domain element seriali" +
        "zers are installed properly on the given store, \r\n\t\t/// so that deserialization " +
        "can be carried out correctly.\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"store\">Store" +
        " on which moniker resolvers will be set up.</param>\r\n\t\tinternal protected virtua" +
        "l void InitializeSerialization(DslModeling::Store store)\r\n\t\t{\r\n\t\t\t#region Check " +
        "Parameters\r\n\t\t\tglobal::System.Diagnostics.Debug.Assert(store != null);\r\n\t\t\tif (s" +
        "tore == null)\r\n\t\t\t\tthrow new global::System.ArgumentNullException(\"store\");\r\n\t\t\t" +
        "#endregion\r\n\t\r\n\t\t\tDslModeling::DomainXmlSerializerDirectory directory = this.Get" +
        "Directory(store);\r\n\t\t\r\n\t\t\t// Add serialization behaviors\r\n\t\t\tdirectory.AddBehavi" +
        "or(");

        
        #line default
        #line hidden
        
        #line 574 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 574 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"SerializationBehavior.Instance);
		}
		
		/// <summary>
		/// Gets or set wether serializers have already been initialized or not.
		/// </summary>		
		public static bool IsInitializeSerialized = false;
		
        private static void AddTypeEmbeddedDerivedNameTypesElement(System.Guid key, string name, System.Guid id)
		{
			try
			{
				if( !typeEmbeddedDerivedNameTypes[key].ContainsKey(name) )
					typeEmbeddedDerivedNameTypes[key].Add(name, new System.Collections.Generic.List<System.Guid>());
					
				typeEmbeddedDerivedNameTypes[key][name].Add(id);
			}
			catch{}
		}
		private static void AddTypeDerivedNameTypesElement(System.Guid key, string name, System.Guid id)
		{
			try
			{
				typeDerivedNameTypes[key].Add(name, id);
			}
			catch{}
		}

		/// <summary>
		/// Initializes serializers (creates derived classes lookup dictionaries).
		/// </summary>
		/// <param name=""directory"">Serializer dictionary.</param>
		/// <param name=""domainDataDirectory"">DomainDataDirectory to be used to discover all derived classes.</param>
		public static void InitializeSerializers(DslModeling::DomainXmlSerializerDirectory directory, DslModeling::DomainDataDirectory domainDataDirectory)
		{
			if( IsInitializeSerialized )
				return;
				
");

        
        #line default
        #line hidden
        
        #line 612 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

	foreach(DomainClass domainClass in dm.AllClasses)
	{
		if( domainClass.AllDerivedClasses.Count > 0 )
		{

        
        #line default
        #line hidden
        
        #line 617 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\t// add dictionary informations...\r\n\t\t\ttypeDerivedNameTypes.Add(");

        
        #line default
        #line hidden
        
        #line 619 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 619 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(".DomainClassId, new System.Collections.Generic.Dictionary<string, System.Guid>())" +
        ";\r\n");

        
        #line default
        #line hidden
        
        #line 620 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

			foreach(DomainClass derivedClass in domainClass.AllDerivedClasses)
			{
				if( derivedClass.InheritanceModifier == InheritanceModifier.Abstract )
					continue;

        
        #line default
        #line hidden
        
        #line 625 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\tAddTypeDerivedNameTypesElement(");

        
        #line default
        #line hidden
        
        #line 626 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 626 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(".DomainClassId, \"");

        
        #line default
        #line hidden
        
        #line 626 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(derivedClass.SerializationName));

        
        #line default
        #line hidden
        
        #line 626 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\", ");

        
        #line default
        #line hidden
        
        #line 626 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(derivedClass.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 626 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(".DomainClassId);\r\n");

        
        #line default
        #line hidden
        
        #line 627 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

			}
		}
	
		SerializedDomainClass sDomainClass = domainClass.SerializedDomainClass;
		List<DomainClass> derivedEmbClasses = new List<DomainClass>();
		foreach(SerializationElement child in sDomainClass.Children )
		{
			if( child is SerializedEmbeddingRelationship )
			{
				SerializedEmbeddingRelationship sCon = child as SerializedEmbeddingRelationship;
				EmbeddingRelationship con = sCon.EmbeddingRelationship;
		
				if( sCon.OmitRelationship )
					continue;
				
				if( con.Target.RolePlayer is DomainClass )
					derivedEmbClasses.Add(con.Target.RolePlayer as DomainClass);
			}
		}
		if( derivedEmbClasses.Count > 0 )
		{

        
        #line default
        #line hidden
        
        #line 649 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\t\t\r\n\t\t\ttypeEmbeddedDerivedNameTypes.Add(");

        
        #line default
        #line hidden
        
        #line 651 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 651 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(".DomainClassId, new System.Collections.Generic.Dictionary<string, System.Collecti" +
        "ons.Generic.List<System.Guid>>());\r\n");

        
        #line default
        #line hidden
        
        #line 652 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

			foreach(DomainClass dDerivedEmb in derivedEmbClasses )
				foreach(DomainClass derivedClass in dDerivedEmb.AllDerivedClasses)
				{
					if( derivedClass.InheritanceModifier == InheritanceModifier.Abstract )
						continue;
				
				

        
        #line default
        #line hidden
        
        #line 660 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\tAddTypeEmbeddedDerivedNameTypesElement(");

        
        #line default
        #line hidden
        
        #line 661 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 661 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(".DomainClassId, \"");

        
        #line default
        #line hidden
        
        #line 661 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(derivedClass.SerializationName));

        
        #line default
        #line hidden
        
        #line 661 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\", ");

        
        #line default
        #line hidden
        
        #line 661 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(derivedClass.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 661 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(".DomainClassId);\r\n");

        
        #line default
        #line hidden
        
        #line 662 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

			}
		}
		
	}

        
        #line default
        #line hidden
        
        #line 667 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\t\r\n            typeDNTInitializedEvent.Set();\r\n\t\t\ttypeEmbeddedDNTInitializedEve" +
        "nt.Set();\r\n\t\t\t\r\n\t\t\tIsInitializeSerialized = true;\r\n\r\n");

        
        #line default
        #line hidden
        
        #line 674 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

		foreach(MetaModelLibrary lib in dm.MetaModelLibraries)
			if( lib.ImportedLibrary != null )
			{
				MetaModel m = lib.ImportedLibrary as MetaModel;

        
        #line default
        #line hidden
        
        #line 679 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\t");

        
        #line default
        #line hidden
        
        #line 680 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(m.Namespace));

        
        #line default
        #line hidden
        
        #line 680 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 680 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(m.Name));

        
        #line default
        #line hidden
        
        #line 680 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelper.InitializeSerializers(directory, domainDataDirectory);\r\n");

        
        #line default
        #line hidden
        
        #line 681 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

			}

        
        #line default
        #line hidden
        
        #line 683 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t}\r\n\t\t#endregion\r\n\t\t\r\n");

        
        #line default
        #line hidden
        
        #line 687 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

	DomainClass domainModel = null;
	foreach(DomainClass domainClass in dm.AllClasses)
	{
		if( domainClass.IsDomainModel )
		{
			domainModel = domainClass;


        
        #line default
        #line hidden
        
        #line 695 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\r\n\t\t#region Serialization Methods for ");

        
        #line default
        #line hidden
        
        #line 697 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 697 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\r\n\t\t/// <summary>\r\n\t\t/// Loads a ");

        
        #line default
        #line hidden
        
        #line 699 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 699 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" instance.\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"serializationResult\">Stores seri" +
        "alization result from the load operation.</param>\r\n\t\t/// <param name=\"partition\"" +
        ">Partition in which the new ");

        
        #line default
        #line hidden
        
        #line 702 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 702 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" instance will be created.</param>\r\n\t\t/// <param name=\"fileName\">Name of the file" +
        " from which the ");

        
        #line default
        #line hidden
        
        #line 703 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 703 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@" instance will be deserialized.</param>
		/// <param name=""schemaResolver"">
		/// An ISchemaResolver that allows the serializer to do schema validation on the root element (and everything inside it).
		/// If null is passed, schema validation will not be performed.
		/// </param>
		/// <param name=""validationController"">
		/// A ValidationController that will be used to do load-time validation (validations with validation category ""Load""). If null
		/// is passed, load-time validation will not be performed.
		/// </param>
		/// <param name=""serializerLocator""></param>
		/// <returns>The loaded MetaModel instance.</returns>
        [global::System.Diagnostics.CodeAnalysis.SuppressMessage(""Microsoft.Maintainability"", ""CA1506:AvoidExcessiveClassCoupling"", Justification = ""Generated code"")]
        public virtual ");

        
        #line default
        #line hidden
        
        #line 715 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 715 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" LoadModel");

        
        #line default
        #line hidden
        
        #line 715 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 715 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"(DslModeling::SerializationResult serializationResult, DslModeling::Partition partition, string fileName, DslModeling::ISchemaResolver schemaResolver, DslValidation::ValidationController validationController, DslModeling::ISerializerLocator serializerLocator)
        {
            #region Check Parameters
            if (serializationResult == null)
                throw new global::System.ArgumentNullException(""serializationResult"");
            if (partition == null)
                throw new global::System.ArgumentNullException(""partition"");
            if (string.IsNullOrEmpty(fileName))
                throw new global::System.ArgumentNullException(""fileName"");
            #endregion

            DslEditorModeling::DomainModelStore dStore = (DslEditorModeling::DomainModelStore)partition.Store;
            if( dStore == null)
                throw new global::System.ArgumentNullException(""dStore"");
			//dStore.WaitForWritingLockRelease();

            // Ensure there is a transaction for this model to Load in.
            if (!partition.Store.TransactionActive)
            {
                throw new global::System.InvalidOperationException(");

        
        #line default
        #line hidden
        
        #line 734 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 734 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("DomainModel.SingletonResourceManager.GetString(\"MissingTransaction\"));\r\n         " +
        "   }\r\n\t\t\t\r\n\t\t\t");

        
        #line default
        #line hidden
        
        #line 737 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 737 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" modelRoot = null;\r\n\t\t\tDslModeling::DomainXmlSerializerDirectory directory = this" +
        ".GetDirectory(partition.Store);\r\n\t\t\tDslModeling::DomainClassXmlSerializer modelR" +
        "ootSerializer = directory.GetSerializer(");

        
        #line default
        #line hidden
        
        #line 739 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 739 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(".DomainClassId);\r\n\t\t\tglobal::System.Diagnostics.Debug.Assert(modelRootSerializer " +
        "!= null, \"Cannot find serializer for ");

        
        #line default
        #line hidden
        
        #line 740 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 740 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"!"");
			if (modelRootSerializer != null)
			{
				global::System.IO.FileStream fileStream = null;
			
				try
				{
					fileStream = global::System.IO.File.OpenRead(fileName);
					
					DslModeling::SerializationContext serializationContext = new DslModeling::SerializationContext(directory, fileStream.Name, serializationResult);
					this.InitializeSerializationContext(partition, serializationContext, true);
					DslModeling::TransactionContext transactionContext = new DslModeling::TransactionContext();
					transactionContext.Add(DslModeling::SerializationContext.TransactionContextKey, serializationContext);
					
					//using (DslModeling::Transaction t = partition.Store.TransactionManager.BeginTransaction(""Load Model from "" + fileName, true, transactionContext))
					//{
						// Ensure there is some content in the file.  Blank (or almost blank, to account for encoding header bytes, etc.)
						// files will cause a new root element to be created and returned. 
						if (fileStream.Length > 5)
						{
							global::System.Xml.XmlReaderSettings settings = ");

        
        #line default
        #line hidden
        
        #line 760 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 760 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"SerializationHelper.Instance.CreateXmlReaderSettings(serializationContext, false);
							using (global::System.Xml.XmlReader reader = global::System.Xml.XmlReader.Create(fileStream, settings))
							{
								try
								{	
									// Attempt to read the encoding.
									reader.Read(); // Move to the first node - will be the XmlDeclaration if there is one.
									global::System.Text.Encoding encoding;
									if (this.TryGetEncoding(reader, out encoding))
									{
										serializationResult.Encoding = encoding;
									}
	
									// Load any additional domain models that are required
									//DslModeling::SerializationUtilities.ResolveDomainModels(reader, serializerLocator, partition.Store);
								
									reader.MoveToContent();
									
									modelRoot = modelRootSerializer.TryCreateInstance(serializationContext, reader, partition) as ");

        
        #line default
        #line hidden
        
        #line 778 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 778 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(";\r\n\t\t\t\t\t\t\t\t\tif (modelRoot != null && !serializationResult.Failed)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t" +
        "\t\t\t\t\t\t\t\tmodelRoot.DomainFilePath = fileName;\r\n\t\t\t\t\t\t\t\t\t\tthis.ReadRootElement");

        
        #line default
        #line hidden
        
        #line 782 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 782 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"(serializationContext, modelRoot, reader, schemaResolver);
									}
									
                                    fileStream.Dispose();
								}
								catch (global::System.Xml.XmlException xEx)
								{
									DslModeling::SerializationUtilities.AddMessage(
										serializationContext,
										DslModeling::SerializationMessageKind.Error,
										xEx
									);
								}
								finally
								{
									fileStream = null;
								}	
							}							
						}
				
						if(modelRoot == null && !serializationResult.Failed)
						{
							// create model root if it doesn't exist.
							modelRoot = this.CreateModelHelper");

        
        #line default
        #line hidden
        
        #line 805 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 805 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"(partition);
							modelRoot.DomainFilePath = fileName;
						}
						//if (t.IsActive)
						//	t.Commit();
					//}
	
					// Do load-time validation if a ValidationController is provided.
					if (!serializationResult.Failed && validationController != null)
					{
						using (new SerializationValidationObserver(serializationResult, validationController))
						{
							validationController.Validate(partition, DslValidation::ValidationCategories.Load);
						}
					}
				}
				finally
				{
					if( fileStream != null )
						fileStream.Dispose();
				}
			}
			return modelRoot;
        }
		
		/// <summary>
		/// Helper method to create and initialize a new ");

        
        #line default
        #line hidden
        
        #line 831 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 831 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(".\r\n\t\t/// </summary>\r\n\t\tinternal protected virtual ");

        
        #line default
        #line hidden
        
        #line 833 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 833 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" CreateModelHelper");

        
        #line default
        #line hidden
        
        #line 833 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 833 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("(DslModeling::Partition modelPartition)\r\n\t\t{\r\n\t\t\t");

        
        #line default
        #line hidden
        
        #line 835 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 835 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" model = new ");

        
        #line default
        #line hidden
        
        #line 835 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 835 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("(modelPartition, \r\n\t\t\t\t");

        
        #line default
        #line hidden
        
        #line 836 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 836 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("DomainModelIdProvider.Instance.AssignId(null));\r\n\t\t\tif( ");

        
        #line default
        #line hidden
        
        #line 837 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 837 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("ElementNameProvider.Instance.HasName(model) )\r\n\t\t\t\t");

        
        #line default
        #line hidden
        
        #line 838 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 838 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("ElementNameProvider.Instance.SetName(model, \"");

        
        #line default
        #line hidden
        
        #line 838 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 838 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@""");
				
			return model;
		}
		
		/// <summary>
		/// Read an element from the root of XML.
		/// </summary>
		/// <param name=""serializationContext"">Serialization context.</param>
		/// <param name=""rootElement"">In-memory element instance that will get the deserialized data.</param>
		/// <param name=""reader"">XmlReader to read serialized data from.</param>
		/// <param name=""schemaResolver"">An ISchemaResolver that allows the serializer to do schema validation on the root element (and everything inside it).</param>
		protected virtual void ReadRootElement");

        
        #line default
        #line hidden
        
        #line 850 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 850 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("(DslModeling::SerializationContext serializationContext, DslModeling::ModelElemen" +
        "t rootElement, global::System.Xml.XmlReader reader, DslModeling::ISchemaResolver" +
        " schemaResolver)\r\n\t\t{\r\n\t\t\t#region Check Parameters\r\n\t\t\tglobal::System.Diagnostic" +
        "s.Debug.Assert(serializationContext != null);\r\n\t\t\tif (serializationContext == nu" +
        "ll)\r\n\t\t\t\tthrow new global::System.ArgumentNullException(\"serializationContext\");" +
        "\r\n\t\t\tglobal::System.Diagnostics.Debug.Assert(rootElement != null);\r\n\t\t\tif (rootE" +
        "lement == null)\r\n\t\t\t\tthrow new global::System.ArgumentNullException(\"rootElement" +
        "\");\r\n\t\t\tglobal::System.Diagnostics.Debug.Assert(reader != null);\r\n\t\t\tif (reader " +
        "== null)\r\n\t\t\t\tthrow new global::System.ArgumentNullException(\"reader\");\r\n\t\t\t#end" +
        "region\r\n\t\r\n\t\t\tDslModeling::DomainXmlSerializerDirectory directory = this.GetDire" +
        "ctory(rootElement.Store);\r\n\t\r\n\t\t\tDslModeling::DomainClassXmlSerializer rootSeria" +
        "lizer = directory.GetSerializer(rootElement.GetDomainClass().Id);\r\n\t\t\tglobal::Sy" +
        "stem.Diagnostics.Debug.Assert(rootSerializer != null, \"Cannot find serializer fo" +
        "r \" + rootElement.GetDomainClass().Name + \"!\");\r\n\t\r\n\t\t\t// Version check.\r\n\t\t\t//t" +
        "his.CheckVersion(serializationContext, reader);\r\n\t\t\tif (!serializationContext.Re" +
        "sult.Failed)\r\n\t\t\t{\t\r\n\t\t\t\trootSerializer.Read(serializationContext, rootElement, " +
        "reader);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t/// <summary>\r\n\t\t/// Saves the given model root to th" +
        "e given file, with specified encoding.\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"ser" +
        "ializationResult\">Stores serialization result from the save operation.</param>\r\n" +
        "\t\t/// <param name=\"modelRoot\">");

        
        #line default
        #line hidden
        
        #line 881 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 881 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" instance to be saved.</param>\r\n\t\t/// <param name=\"fileName\">Name of the file in " +
        "which the ");

        
        #line default
        #line hidden
        
        #line 882 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 882 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" instance will be saved.</param>\r\n\t\t/// <param name=\"encoding\">Encoding to use wh" +
        "en saving the ");

        
        #line default
        #line hidden
        
        #line 883 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 883 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@" instance.</param>
		/// <param name=""writeOptionalPropertiesWithDefaultValue"">Whether optional properties with default value will be saved.</param>
		[global::System.Diagnostics.CodeAnalysis.SuppressMessage(""Microsoft.Design"", ""CA1011:ConsiderPassingBaseTypesAsParameters"")]
		public virtual void SaveModel");

        
        #line default
        #line hidden
        
        #line 886 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 886 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("(DslModeling::SerializationResult serializationResult, ");

        
        #line default
        #line hidden
        
        #line 886 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 886 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@" modelRoot, string fileName, global::System.Text.Encoding encoding, bool writeOptionalPropertiesWithDefaultValue)
		{
			#region Check Parameters
			if (serializationResult == null)
				throw new global::System.ArgumentNullException(""serializationResult"");
			if (modelRoot == null)
				throw new global::System.ArgumentNullException(""modelRoot"");
			if (string.IsNullOrEmpty(fileName))
				throw new global::System.ArgumentNullException(""fileName"");
			#endregion
	
            //DslEditorModeling::DomainModelStore dStore = (DslEditorModeling::DomainModelStore)modelRoot.Store;
            //if( dStore == null)
            //    throw new global::System.ArgumentNullException(""dStore"");
				
			//dStore.WaitForWritingLockRelease();
			
			if (serializationResult.Failed)
				return;
	
			global::System.IO.MemoryStream newFileContent = null;
			try
			{
				newFileContent = new global::System.IO.MemoryStream();
			
				DslModeling::DomainXmlSerializerDirectory directory = this.GetDirectory(modelRoot.Store);
	
				DslModeling::SerializationContext serializationContext = new DslModeling::SerializationContext(directory, fileName, serializationResult);
				this.InitializeSerializationContext(modelRoot.Partition, serializationContext, false);
				serializationContext.WriteOptionalPropertiesWithDefaultValue = writeOptionalPropertiesWithDefaultValue;
				global::System.Xml.XmlWriterSettings settings = ");

        
        #line default
        #line hidden
        
        #line 916 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 916 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"SerializationHelper.Instance.CreateXmlWriterSettings(serializationContext, false, encoding);
				
				global::System.Xml.XmlWriter writer = global::System.Xml.XmlWriter.Create(newFileContent, settings);
				DslEditorModeling.SerializationOptions options = new DslEditorModeling.SerializationOptions();
                options.SerializationMode = DslEditorModeling.SerializationMode.Normal;
				this.WriteRootElement");

        
        #line default
        #line hidden
        
        #line 921 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 921 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("(serializationContext, modelRoot, writer, options);\r\n\t\t\t\t\r\n\t\t\t\twriter.Flush();\r\n\t" +
        "\r\n\t\t\t\tif (!serializationResult.Failed && newFileContent != null)\r\n\t\t\t\t{\t// Only " +
        "write the content if there\'s no error encountered during serialization.\r\n\t\t\t\t\tgl" +
        "obal::System.IO.FileStream fileStream = null;\r\n\t\t\t\t\ttry\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfileStrea" +
        "m = new global::System.IO.FileStream(fileName, global::System.IO.FileMode.Create" +
        ", global::System.IO.FileAccess.Write, global::System.IO.FileShare.None);\r\n\t\t\t\t\t\t" +
        "using (global::System.IO.BinaryWriter writerBin = new global::System.IO.BinaryWr" +
        "iter(fileStream, encoding))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttry\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\twriterBin.Wr" +
        "ite(newFileContent.ToArray());\r\n\t\t\t\t\t\t\t\tfileStream.Dispose();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t" +
        "finally\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfileStream = null;\r\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r" +
        "\n\t\t\t\t\tfinally\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif( fileStream != null )\r\n\t\t\t\t\t\t\tfileStream.Dispose" +
        "();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfinally\r\n\t\t\t{\r\n\t\t\t\tif( newFileContent != null )\r\n\t\t" +
        "\t\t\tnewFileContent.Dispose();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t/// <summary>\r\n\t\t/// Saves the gi" +
        "ven model root as a in-memory stream.\r\n\t\t/// This is a helper used by SaveModel(" +
        ") and SaveModelAndDiagram(). When saving the model and the diagram together, we " +
        "want to make sure that \r\n\t\t/// both can be saved without error before writing th" +
        "e content to disk, so we serialize the model into a in-memory stream first.\r\n\t\t/" +
        "// </summary>\r\n\t\t/// <param name=\"serializationResult\">Stores serialization resu" +
        "lt from the save operation.</param>\r\n\t\t/// <param name=\"modelRoot\">");

        
        #line default
        #line hidden
        
        #line 964 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 964 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" instance to be saved.</param>\r\n\t\t/// <param name=\"fileName\">Name of the file in " +
        "which the ");

        
        #line default
        #line hidden
        
        #line 965 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 965 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" instance will be saved.</param>\r\n\t\t/// <param name=\"encoding\">Encoding to use wh" +
        "en saving the ");

        
        #line default
        #line hidden
        
        #line 966 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 966 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@" instance.</param>
		/// <param name=""writeOptionalPropertiesWithDefaultValue"">Whether optional properties with default value will be saved.</param>
		/// <param name=""serializationMode"">Serialization Mode.</param>
		/// <returns>In-memory stream containing the serialized ");

        
        #line default
        #line hidden
        
        #line 969 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 969 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@" instance.</returns>
		[global::System.Diagnostics.CodeAnalysis.SuppressMessage(""Microsoft.Design"", ""CA1011:ConsiderPassingBaseTypesAsParameters"")]
		[global::System.Diagnostics.CodeAnalysis.SuppressMessage(""Microsoft.Reliability"", ""CA2000:Dispose objects before losing scope"")]
		private global::System.IO.MemoryStream InternalSaveModel");

        
        #line default
        #line hidden
        
        #line 972 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 972 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("(DslModeling::SerializationResult serializationResult, ");

        
        #line default
        #line hidden
        
        #line 972 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 972 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@" modelRoot, string fileName, global::System.Text.Encoding encoding, bool writeOptionalPropertiesWithDefaultValue, DslEditorModeling.SerializationMode serializationMode)
		{
			#region Check Parameters
			global::System.Diagnostics.Debug.Assert(serializationResult != null);
			global::System.Diagnostics.Debug.Assert(modelRoot != null);
			global::System.Diagnostics.Debug.Assert(!serializationResult.Failed);
			#endregion
		
            //DslEditorModeling::DomainModelStore dStore = (DslEditorModeling::DomainModelStore)modelRoot.Store;
            //if( dStore == null)
            //    throw new global::System.ArgumentNullException(""dStore"");
				
			//dStore.WaitForWritingLockRelease();
			
			serializationResult.Encoding = encoding;
	
			DslModeling::DomainXmlSerializerDirectory directory = this.GetDirectory(modelRoot.Store);
	
			
			global::System.IO.MemoryStream newFileContent = new global::System.IO.MemoryStream();
			
			DslModeling::SerializationContext serializationContext = new DslModeling::SerializationContext(directory, fileName, serializationResult);
			this.InitializeSerializationContext(modelRoot.Partition, serializationContext, false);
			// MonikerResolver shouldn't be required in Save operation, so not calling SetupMonikerResolver() here.
			serializationContext.WriteOptionalPropertiesWithDefaultValue = writeOptionalPropertiesWithDefaultValue;
			global::System.Xml.XmlWriterSettings settings = ");

        
        #line default
        #line hidden
        
        #line 997 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 997 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"SerializationHelper.Instance.CreateXmlWriterSettings(serializationContext, false, encoding);
			using (global::System.Xml.XmlWriter writer = global::System.Xml.XmlWriter.Create(newFileContent, settings))
			{
				DslEditorModeling.SerializationOptions options = new DslEditorModeling.SerializationOptions();
                //options.SerializationMode = DslEditorModeling.SerializationMode.InternalToString;
				options.SerializationMode = serializationMode;
                this.WriteRootElement");

        
        #line default
        #line hidden
        
        #line 1003 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 1003 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"(serializationContext, modelRoot, writer, options);
			}
				
			return newFileContent;
		}
	
		/// <summary>
		/// Saves the given model root to the given file, with specified encoding.
		/// </summary>
		/// <param name=""serializationResult"">Stores serialization result from the save operation.</param>
		/// <param name=""modelRoot"">VModell instance to be saved.</param>
		/// <param name=""fileName"">Name of the file in which the VModell instance will be saved.</param>
		/// <param name=""encoding"">Encoding to use when saving the VModell instance.</param>
		/// <param name=""writeOptionalPropertiesWithDefaultValue"">Whether optional properties with default value will be saved.</param>
        [global::System.Diagnostics.CodeAnalysis.SuppressMessage(""Microsoft.Design"", ""CA1011:ConsiderPassingBaseTypesAsParameters"")]
        public virtual void TemporarlySaveModel");

        
        #line default
        #line hidden
        
        #line 1018 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 1018 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("(DslModeling::SerializationResult serializationResult, ");

        
        #line default
        #line hidden
        
        #line 1018 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 1018 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" modelRoot, string fileName, global::System.Text.Encoding encoding, bool writeOpt" +
        "ionalPropertiesWithDefaultValue)\r\n        {\r\n            #region Check Parameter" +
        "s\r\n            if (serializationResult == null)\r\n                throw new globa" +
        "l::System.ArgumentNullException(\"serializationResult\");\r\n            if (modelRo" +
        "ot == null)\r\n                throw new global::System.ArgumentNullException(\"mod" +
        "elRoot\");\r\n            if (string.IsNullOrEmpty(fileName))\r\n                thro" +
        "w new global::System.ArgumentNullException(\"fileName\");\r\n            #endregion\r" +
        "\n\r\n            if (serializationResult.Failed)\r\n                return;\r\n\r\n     " +
        "       //DslEditorModeling::DomainModelStore dStore = (DslEditorModeling::Domain" +
        "ModelStore)modelRoot.Store;\r\n            //if( dStore == null)\r\n            //  " +
        "  throw new global::System.ArgumentNullException(\"dStore\");\r\n\t\t\t\t\r\n\t\t\t//dStore.W" +
        "aitForWritingLockRelease();\r\n\r\n\t\t\tglobal::System.IO.MemoryStream newFileContent " +
        "= null;\r\n            try \r\n            {\r\n\t\t\t\tnewFileContent = new global::Syste" +
        "m.IO.MemoryStream();\r\n\t\t\t\t\r\n                DslModeling::DomainXmlSerializerDire" +
        "ctory directory = this.GetDirectory(modelRoot.Store);\r\n\r\n                DslMode" +
        "ling::SerializationContext serializationContext = new DslModeling::Serialization" +
        "Context(directory, fileName, serializationResult);\r\n                this.Initial" +
        "izeSerializationContext(modelRoot.Partition, serializationContext, false);\r\n    " +
        "            serializationContext.WriteOptionalPropertiesWithDefaultValue = write" +
        "OptionalPropertiesWithDefaultValue;\r\n                global::System.Xml.XmlWrite" +
        "rSettings settings = ");

        
        #line default
        #line hidden
        
        #line 1048 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 1048 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"SerializationHelper.Instance.CreateXmlWriterSettings(serializationContext, false, encoding);
                
				global::System.Xml.XmlWriter writer = global::System.Xml.XmlWriter.Create(newFileContent, settings);
               	DslEditorModeling::SerializationOptions options = new DslEditorModeling.SerializationOptions();
              	options.SerializationMode = DslEditorModeling.SerializationMode.Temporarly;
              	this.WriteRootElement");

        
        #line default
        #line hidden
        
        #line 1053 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 1053 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("(serializationContext, modelRoot, writer, options);\r\n\t\t\t\t\r\n\t\t\t\twriter.Flush();\r\n\r" +
        "\n                if (!serializationResult.Failed && newFileContent != null)\r\n   " +
        "             {\t// Only write the content if there\'s no error encountered during " +
        "serialization.\r\n\t\t\t\t\tglobal::System.IO.FileStream fileStream = null;\r\n          " +
        "          try\r\n                    {\r\n\t\t\t\t\t\tfileStream = new global::System.IO.F" +
        "ileStream(fileName, global::System.IO.FileMode.Create, global::System.IO.FileAcc" +
        "ess.Write, global::System.IO.FileShare.None);\r\n                        using (gl" +
        "obal::System.IO.BinaryWriter writerBin = new global::System.IO.BinaryWriter(file" +
        "Stream, encoding))\r\n                        {\r\n\t\t\t\t\t\t\ttry\r\n\t\t\t\t\t\t\t{\r\n           " +
        "                 \twriterBin.Write(newFileContent.ToArray());\r\n\t\t\t\t\t\t\t\tfileStream" +
        ".Dispose();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tfinally\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfileStream = null;\r\n\t\t\t" +
        "\t\t\t\t}\t\t\t\t\t\t\t\r\n                        }\r\n                    }\r\n\t\t\t\t\tfinally\r\n\t\t" +
        "\t\t\t{\r\n\t\t\t\t\t\tif( fileStream != null )\r\n\t\t\t\t\t\t\tfileStream.Dispose();\r\n\t\t\t\t\t}\r\n    " +
        "            }\r\n            }\r\n\t\t\tfinally\r\n\t\t\t{\r\n\t\t\t\tif( newFileContent != null )" +
        "\r\n\t\t\t\t\tnewFileContent.Dispose();\r\n\t\t\t}\r\n        }\r\n\t\r\n\t\t/// <summary>\r\n\t\t/// Wri" +
        "te an element as the root of XML.\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"serializ" +
        "ationContext\">Serialization context.</param>\r\n\t\t/// <param name=\"rootElement\">Ro" +
        "ot element instance that will be serialized.</param>\r\n\t\t/// <param name=\"writer\"" +
        ">XmlWriter to write serialized data to.</param>\r\n\t\t/// <param name=\"options\">Ser" +
        "ialization options.</param>\r\n\t\tpublic virtual void WriteRootElement");

        
        #line default
        #line hidden
        
        #line 1097 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 1097 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("(DslModeling::SerializationContext serializationContext, DslModeling::ModelElemen" +
        "t rootElement, global::System.Xml.XmlWriter writer, DslEditorModeling::Serializa" +
        "tionOptions options)\r\n\t\t{\r\n\t\t\t#region Check Parameters\r\n\t\t\tglobal::System.Diagno" +
        "stics.Debug.Assert(serializationContext != null);\r\n\t\t\tif (serializationContext =" +
        "= null)\r\n\t\t\t\tthrow new global::System.ArgumentNullException(\"serializationContex" +
        "t\");\r\n\t\t\tglobal::System.Diagnostics.Debug.Assert(rootElement != null);\r\n\t\t\tif (r" +
        "ootElement == null)\r\n\t\t\t\tthrow new global::System.ArgumentNullException(\"rootEle" +
        "ment\");\r\n\t\t\tglobal::System.Diagnostics.Debug.Assert(writer != null);\r\n\t\t\tif (wri" +
        "ter == null)\r\n\t\t\t\tthrow new global::System.ArgumentNullException(\"writer\");\r\n\t\t\t" +
        "#endregion\r\n\t\r\n\t\t\tDslModeling::DomainXmlSerializerDirectory directory = this.Get" +
        "Directory(rootElement.Store);\r\n\t\r\n\t\t\tDslEditorModeling::SerializationDomainClass" +
        "XmlSerializer rootSerializer = directory.GetSerializer(rootElement.GetDomainClas" +
        "s().Id) as DslEditorModeling::SerializationDomainClassXmlSerializer;\r\n\t\t\tglobal:" +
        ":System.Diagnostics.Debug.Assert(rootSerializer != null, \"Cannot find serializer" +
        " for \" + rootElement.GetDomainClass().Name + \"!\");\r\n\t\r\n\t\t\t// Carry out the norma" +
        "l serialization.\r\n\t\t\trootSerializer.Write(serializationContext, rootElement, wri" +
        "ter, new DslModeling::RootElementSettings(), options);\r\n\t\t}\r\n\t\t\r\n\t\t/// <summary>" +
        "\r\n\t\t/// Return the model in XML format\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"mod" +
        "elRoot\">Root instance to be saved.</param>\r\n\t\t/// <param name=\"encoding\">Encodin" +
        "g to use when saving the root instance.</param>\r\n\t\t/// <param name=\"serializatio" +
        "nMode\">Serialization Mode.</param>\r\n\t\t/// <returns>Model in XML form</returns>\r\n" +
        "\t\tpublic virtual string GetSerializedModelString");

        
        #line default
        #line hidden
        
        #line 1127 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 1127 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("(");

        
        #line default
        #line hidden
        
        #line 1127 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 1127 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@" modelRoot, global::System.Text.Encoding encoding, DslEditorModeling.SerializationMode serializationMode)
		{
			string result = string.Empty;
			if (modelRoot == null)
			{
				return result;
			}
	
	        //DslEditorModeling::DomainModelStore dStore = (DslEditorModeling::DomainModelStore)modelRoot.Store;
            //if( dStore == null)
            //    throw new global::System.ArgumentNullException(""dStore"");
				
			//dStore.WaitForWritingLockRelease();
	
			DslModeling::SerializationResult serializationResult = new DslModeling::SerializationResult();
			using (global::System.IO.MemoryStream modelFileContent = this.InternalSaveModel");

        
        #line default
        #line hidden
        
        #line 1142 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainModel.Name));

        
        #line default
        #line hidden
        
        #line 1142 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(@"(serializationResult, modelRoot, string.Empty, encoding, false, serializationMode))
			{
				if (!serializationResult.Failed && modelFileContent != null)
				{
					char[] chars = encoding.GetChars(modelFileContent.GetBuffer());
	
					// search the open angle bracket and trim off the Byte Of Mark.
					result = new string( chars);
					int indexPos = result.IndexOf('<');
					if (indexPos > 0)
					{
						// strip off the leading Byte Of Mark.
						result = result.Substring(indexPos);
					}
	
					// trim off trailing 0s.
					result = result.TrimEnd( '\0');
				}
			}
			return result;
		}
		#endregion
");

        
        #line default
        #line hidden
        
        #line 1164 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

		}
	}

        
        #line default
        #line hidden
        
        #line 1167 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("\t\t\r\n\t\t#region Private/Helper Methods/Properties\r\n\t\t#region Class SerializationVal" +
        "idationObserver\r\n\t\t/// <summary>\r\n\t\t/// An utility class to collect validation m" +
        "essages during serialization, and store them in serialization result.\r\n\t\t/// </s" +
        "ummary>\r\n\t\tprotected sealed class SerializationValidationObserver : DslValidatio" +
        "n::ValidationMessageObserver, global::System.IDisposable\r\n\t\t{\r\n\t\t\t#region Member" +
        " Variables\r\n\t\t\t/// <summary>\r\n\t\t\t/// SerializationResult to store the messages.\r" +
        "\n\t\t\t/// </summary>\r\n\t\t\tprivate DslModeling::SerializationResult serializationRes" +
        "ult;\r\n\t\t\t/// <summary>\r\n\t\t\t/// ValidationController to get messages from.\r\n\t\t\t//" +
        "/ </summary>\r\n\t\t\tprivate DslValidation::ValidationController validationControlle" +
        "r;\r\n\t\t\t#endregion\r\n\t\r\n\t\t\t#region Constructor\r\n\t\t\t/// <summary>\r\n\t\t\t/// Construct" +
        "or\r\n\t\t\t/// </summary>\r\n\t\t\tinternal SerializationValidationObserver(DslModeling::" +
        "SerializationResult serializationResult, DslValidation::ValidationController val" +
        "idationController)\r\n\t\t\t{\r\n\t\t\t\t#region Check Parameters\r\n\t\t\t\tglobal::System.Diagn" +
        "ostics.Debug.Assert(serializationResult != null);\r\n\t\t\t\tglobal::System.Diagnostic" +
        "s.Debug.Assert(validationController != null);\r\n\t\t\t\t#endregion\r\n\t\r\n\t\t\t\tthis.seria" +
        "lizationResult = serializationResult;\r\n\t\t\t\tthis.validationController = validatio" +
        "nController;\r\n\t\r\n\t\t\t\t// Subscribe to validation messages.\r\n\t\t\t\tthis.validationCo" +
        "ntroller.AddObserver(this);\r\n\t\t\t}\r\n\t\r\n\t\t\t/// <summary>\r\n\t\t\t/// Destructor\r\n\t\t\t//" +
        "/ </summary>\r\n\t\t\t~SerializationValidationObserver()\r\n\t\t\t{\r\n\t\t\t\tthis.Dispose(fals" +
        "e);\r\n\t\t\t}\r\n\t\t\t#endregion\r\n\t\r\n\t\t\t#region Base Overrides\r\n\t\t\t/// <summary>\r\n\t\t\t///" +
        " Called with validation messages are added.\r\n\t\t\t/// </summary>\r\n\t\t\tprotected ove" +
        "rride void OnValidationMessageAdded(DslValidation::ValidationMessage addedMessag" +
        "e)\r\n\t\t\t{\r\n\t\t\t\t#region Check Parameters\r\n\t\t\t\tglobal::System.Diagnostics.Debug.Ass" +
        "ert(addedMessage != null);\r\n\t\t\t\t#endregion\r\n\t\r\n\t\t\t\tif (addedMessage != null && t" +
        "his.serializationResult != null)\r\n\t\t\t\t{\t// Record the validation message as a se" +
        "rialization message.\r\n\t\t\t\t\tDslModeling::SerializationUtilities.AddValidationMess" +
        "age(this.serializationResult, addedMessage);\r\n\t\t\t\t}\r\n\t\t\t\tbase.OnValidationMessag" +
        "eAdded(addedMessage);\r\n\t\t\t}\r\n\t\t\t#endregion\r\n\t\r\n\t\t\t#region IDisposable Members\r\n\t" +
        "\t\t/// <summary>\r\n\t\t\t/// IDisposable.Dispose().\r\n\t\t\t/// </summary>\r\n\t\t\tpublic voi" +
        "d Dispose()\r\n\t\t\t{\r\n\t\t\t\tthis.Dispose(true);\r\n\t\t\t\tglobal::System.GC.SuppressFinali" +
        "ze(this);\r\n\t\t\t}\r\n\t\r\n\t\t\t/// <summary>\r\n\t\t\t/// Unregister the observer on dispose." +
        "\r\n\t\t\t/// </summary>\r\n\t\t\tprivate void Dispose(bool disposing)\r\n\t\t\t{\r\n\t\t\t\tglobal::" +
        "System.Diagnostics.Debug.Assert(disposing, \"SerializationValidationObserver fina" +
        "lized without being disposed!\");\r\n\t\t\t\tif (disposing && this.validationController" +
        " != null)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.validationController.RemoveObserver(this);\r\n\t\t\t\t\tthi" +
        "s.validationController = null;\r\n\t\t\t\t}\r\n\t\t\t\tthis.serializationResult = null;\r\n\t\t\t" +
        "}\r\n\t\t\t#endregion\r\n\t\t}\r\n\t\t#endregion\r\n\t\t#endregion\r\n\t\r\n\t}\r\n\t\r\n\t/// <summary>\r\n\t//" +
        "/ Double derived helper class for serializing and deserializing ");

        
        #line default
        #line hidden
        
        #line 1263 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 1263 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(" models.\r\n\t/// </summary>\r\n\tpublic sealed partial class ");

        
        #line default
        #line hidden
        
        #line 1265 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 1265 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelper : ");

        
        #line default
        #line hidden
        
        #line 1265 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 1265 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelperBase\r\n\t{\r\n\t\t#region Constructor\r\n\t\t/// <summary>\r\n\t\t/// Constr" +
        "uctor\r\n\t\t/// </summary>\r\n\t\tprivate ");

        
        #line default
        #line hidden
        
        #line 1271 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 1271 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelper() : base() { }\r\n\t\t#endregion\r\n\t\t\r\n\t\t#region Singleton Instanc" +
        "e\r\n\t\t/// <summary>\r\n\t\t/// Singleton instance.\r\n\t\t/// </summary>\r\n\t\tprivate stati" +
        "c ");

        
        #line default
        #line hidden
        
        #line 1278 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 1278 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelper instance;\r\n\t\t/// <summary>\r\n\t\t/// Singleton instance.\r\n\t\t/// " +
        "</summary>\r\n\t\t[global::System.Diagnostics.DebuggerBrowsable(global::System.Diagn" +
        "ostics.DebuggerBrowsableState.Never)] // Will trigger creation otherwise.\r\n\t\tpub" +
        "lic static ");

        
        #line default
        #line hidden
        
        #line 1283 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 1283 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelper Instance\r\n\t\t{\r\n\t\t\t[global::System.Diagnostics.DebuggerStepThr" +
        "ough]\r\n\t\t\tget\r\n\t\t\t{\r\n\t\t\t\tif (");

        
        #line default
        #line hidden
        
        #line 1288 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 1288 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelper.instance == null)\r\n\t\t\t\t\t");

        
        #line default
        #line hidden
        
        #line 1289 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 1289 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelper.instance = new ");

        
        #line default
        #line hidden
        
        #line 1289 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 1289 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelper();\r\n\t\t\t\treturn ");

        
        #line default
        #line hidden
        
        #line 1290 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 1290 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"
this.Write("SerializationHelper.instance;\r\n\t\t\t}\r\n\t\t}\r\n\t\t#endregion\r\n\t}\r\n}\r\n");

        
        #line default
        #line hidden
        
        #line 1296 "J:\Temp\!!!!!TESTS_PDE_IMPL3\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\SerializationHelperGenerator.tt"

}
public void GenerateDomainValidation(MetaModel dm)
{
List<AttributedDomainElement> elements = new List<AttributedDomainElement>();
	elements.AddRange(dm.AllClasses);
	elements.AddRange(dm.AllRelationships);
		
	string messageIdsClass = dm.Namespace + "." + dm.Name + "ValidationMessageIds";

        
        #line default
        #line hidden
        
        #line 23 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("namespace ");

        
        #line default
        #line hidden
        
        #line 24 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Namespace));

        
        #line default
        #line hidden
        
        #line 24 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\r\n{\r\n\t/// <summary>\r\n    /// Groups logic for model validation.\r\n    /// </summar" +
        "y>\r\n\tpublic partial class ");

        
        #line default
        #line hidden
        
        #line 29 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 29 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("ValidationController : DslEditorModeling::ModelValidationController\r\n\t{\r\n\t\t#regio" +
        "n Singleton Instance\r\n\t\tprivate static ");

        
        #line default
        #line hidden
        
        #line 32 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 32 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(@"ValidationController validationController = null;
        private static object domainModelValidationLock = new object();
		
        /// <summary>
        /// Singleton instance.
        /// </summary>
        [global::System.Diagnostics.DebuggerBrowsable(global::System.Diagnostics.DebuggerBrowsableState.Never)] // Will trigger creation otherwise.
        public static ");

        
        #line default
        #line hidden
        
        #line 39 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 39 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(@"ValidationController Instance
        {
            [global::System.Diagnostics.DebuggerStepThrough]
            get
            {
				lock(domainModelValidationLock)
				{
					if( validationController == null )
					{
						validationController = new ");

        
        #line default
        #line hidden
        
        #line 48 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 48 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("ValidationController();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// initialize\r\n\t\t\t\t\t\t");

        
        #line default
        #line hidden
        
        #line 51 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 51 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(@"ValidationController.Initialize(validationController, new System.Collections.Generic.List<string>());
					}
				}
				
				return validationController;
            }
        }

        /// <summary>
        /// Constructor.
        /// </summary>		
		private ");

        
        #line default
        #line hidden
        
        #line 62 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 62 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(@"ValidationController() : base()
		{	
		}
        #endregion
	
		#region Initialization		
        /// <summary>
        /// Initializes the static Validation map as well as the Validation is enabled fields in the actual instance of this class.
        /// </summary>
        /// <param name=""controller"">Controller to initalize</param>
        /// <param name=""discardController"">Validation controllers to discard.</param>
        public static void Initialize(DslEditorModeling::ModelValidationController controller, System.Collections.Generic.List<string> discardController)
		{
");

        
        #line default
        #line hidden
        
        #line 75 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"

	foreach(AttributedDomainElement domainElement in elements)
	{
		if( domainElement.GeneratesDoubleDerived )
		{

        
        #line default
        #line hidden
        
        #line 80 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\t\t\tInitializeType(controller, typeof(global::");

        
        #line default
        #line hidden
        
        #line 81 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainElement.Namespace));

        
        #line default
        #line hidden
        
        #line 81 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 81 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainElement.Name));

        
        #line default
        #line hidden
        
        #line 81 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("Base));\r\n");

        
        #line default
        #line hidden
        
        #line 82 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"

		}

        
        #line default
        #line hidden
        
        #line 84 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\t\t\tInitializeType(controller, typeof(");

        
        #line default
        #line hidden
        
        #line 85 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainElement.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 85 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("));\r\n");

        
        #line default
        #line hidden
        
        #line 86 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"

	}

        
        #line default
        #line hidden
        
        #line 88 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\r\n\t\t\t// extern controller\r\n\t\t\tdiscardController.Add(\"");

        
        #line default
        #line hidden
        
        #line 91 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 91 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\");\r\n\r\n");

        
        #line default
        #line hidden
        
        #line 93 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"

		foreach(MetaModelLibrary lib in dm.MetaModelLibraries)
			if( lib.ImportedLibrary != null )
			{
				MetaModel m = lib.ImportedLibrary as MetaModel;

        
        #line default
        #line hidden
        
        #line 98 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\t\t\tif( !discardController.Contains(\"");

        
        #line default
        #line hidden
        
        #line 99 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(m.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 99 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\") )\r\n\t\t\t\t");

        
        #line default
        #line hidden
        
        #line 100 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(m.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 100 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("ValidationController.Initialize(controller, discardController);\r\n\t\t\t\r\n");

        
        #line default
        #line hidden
        
        #line 102 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"

			}

        
        #line default
        #line hidden
        
        #line 104 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\t\t}\r\n\t\t#endregion\r\n\t}\r\n}\r\n\r\nnamespace ");

        
        #line default
        #line hidden
        
        #line 110 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Namespace));

        
        #line default
        #line hidden
        
        #line 110 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\r\n{\r\n\t/// <summary>\r\n    /// Ids identifying model validation messages.\r\n    /// " +
        "</summary>\r\n\tpublic partial class ");

        
        #line default
        #line hidden
        
        #line 115 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 115 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("ValidationMessageIds : DslEditorModeling::ModelValidationMessageIds\r\n\t{\r\n\t\t#regio" +
        "n Property Ids\r\n");

        
        #line default
        #line hidden
        
        #line 118 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"

		foreach(AttributedDomainElement domainElement in elements )
		{
			if( domainElement is EmbeddingRelationship )
				continue;
			
			foreach(DomainProperty p in domainElement.Properties)
			{
				if( p.IsRequired )
				{

        
        #line default
        #line hidden
        
        #line 128 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\t\t/// <summary>\r\n    \t/// ");

        
        #line default
        #line hidden
        
        #line 130 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainElement.Name));

        
        #line default
        #line hidden
        
        #line 130 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("_");

        
        #line default
        #line hidden
        
        #line 130 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Name));

        
        #line default
        #line hidden
        
        #line 130 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(" error ID\r\n    \t/// </summary>\r\n\t\tpublic const string ");

        
        #line default
        #line hidden
        
        #line 132 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainElement.Name));

        
        #line default
        #line hidden
        
        #line 132 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("_");

        
        #line default
        #line hidden
        
        #line 132 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Name));

        
        #line default
        #line hidden
        
        #line 132 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(" = \"");

        
        #line default
        #line hidden
        
        #line 132 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainElement.Name));

        
        #line default
        #line hidden
        
        #line 132 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 132 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Name));

        
        #line default
        #line hidden
        
        #line 132 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\";\r\n");

        
        #line default
        #line hidden
        
        #line 133 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"

				}
			}
		}		

        
        #line default
        #line hidden
        
        #line 137 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\t\t#endregion\r\n\t\t\r\n\t\t#region Relationship Ids\r\n");

        
        #line default
        #line hidden
        
        #line 141 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"

	foreach(AttributedDomainElement domainElement in elements )
	{
		foreach(DomainRole role in domainElement.RolesPlayed )
		{
			if( role.Relationship is EmbeddingRelationship )
				if( role.Relationship.Source != role)
					continue;

			if( role.Multiplicity == Tum.PDE.LanguageDSL.Multiplicity.ZeroMany)
				continue;
				
			if( role.Relationship is ReferenceRelationship )
				if( role != role.Relationship.Source && !(role.Relationship.Target.RolePlayer is DomainClass) )
					continue;
				

        
        #line default
        #line hidden
        
        #line 157 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\t\t/// <summary>\r\n    \t/// ");

        
        #line default
        #line hidden
        
        #line 159 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.Relationship.Name));

        
        #line default
        #line hidden
        
        #line 159 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("_");

        
        #line default
        #line hidden
        
        #line 159 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.Relationship.Target.Name));

        
        #line default
        #line hidden
        
        #line 159 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(" error ID\r\n    \t/// </summary>\r\n\t\tpublic const string ");

        
        #line default
        #line hidden
        
        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.Relationship.Name));

        
        #line default
        #line hidden
        
        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("_");

        
        #line default
        #line hidden
        
        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.Opposite.Name));

        
        #line default
        #line hidden
        
        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(" = \"");

        
        #line default
        #line hidden
        
        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.Relationship.Name));

        
        #line default
        #line hidden
        
        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.Opposite.Name));

        
        #line default
        #line hidden
        
        #line 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\";\r\n");

        
        #line default
        #line hidden
        
        #line 162 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"

		}
	}

        
        #line default
        #line hidden
        
        #line 165 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\t\t#endregion\t\t\r\n\t}\r\n}\r\n\r\n");

        
        #line default
        #line hidden
        
        #line 170 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
	
	foreach(AttributedDomainElement c in elements )
	{
		if( c is EmbeddingRelationship )
			continue;
		
		bool bSkip = true;
		if( c.Properties.Count > 0 )
			foreach(DomainProperty p in c.Properties)
			{
				if( p.IsRequired )
				{
					bSkip = false;
					break;
				}
			}
			
		if( bSkip )
		{
			foreach(DomainRole role in c.RolesPlayed )
			{
				if( role.Relationship.Source == role)
				{
					if( role.Relationship.Source.Multiplicity != Tum.PDE.LanguageDSL.Multiplicity.ZeroMany)
					{
						bSkip = false;
						break;
					}
				}
			}
		}
		
		if( bSkip )
			continue;

        
        #line default
        #line hidden
        
        #line 204 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("namespace ");

        
        #line default
        #line hidden
        
        #line 205 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(c.Namespace));

        
        #line default
        #line hidden
        
        #line 205 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\r\n{\r\n\t/// <summary>\r\n    /// Partial class used to validate ");

        
        #line default
        #line hidden
        
        #line 208 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(c.Name));

        
        #line default
        #line hidden
        
        #line 208 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(".\r\n    /// </summary>\r\n\t[DslEditorModeling::ModelValidationState(DslEditorModelin" +
        "g::ModelValidationState.Enabled)]\r\n\t");

        
        #line default
        #line hidden
        
        #line 211 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetAccessModifier(c.AccessModifier)));

        
        #line default
        #line hidden
        
        #line 211 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGenerationInheritanceModifier(c)));

        
        #line default
        #line hidden
        
        #line 211 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(" partial class ");

        
        #line default
        #line hidden
        
        #line 211 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGenerationClassName(c)));

        
        #line default
        #line hidden
        
        #line 211 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\r\n\t{\r\n\t\t#region Validate\r\n\t\t/// <summary>\r\n   \t\t/// Automatically validates ");

        
        #line default
        #line hidden
        
        #line 215 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(c.Name));

        
        #line default
        #line hidden
        
        #line 215 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write(".\r\n    \t/// </summary>\r\n\t\t[DslEditorModeling::ModelValidationMethod(DslEditorMode" +
        "ling::ModelValidationCategories.Open | DslEditorModeling::ModelValidationCategor" +
        "ies.Save | DslEditorModeling::ModelValidationCategories.Menu)]\t\t\r\n");

        
        #line default
        #line hidden
        
        #line 218 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"

		GenerateValidationFunction(c, messageIdsClass);

        
        #line default
        #line hidden
        
        #line 220 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"
this.Write("\t\t#endregion\r\n\t}\r\n}\r\n");

        
        #line default
        #line hidden
        
        #line 224 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainValidationGenerator.tt"

	}
}
public void GenerateUI(MetaModel dm)
{

        
        #line default
        #line hidden
        
        #line 15 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(@"using DslEditorContracts = Tum.PDE.ToolFramework.Modeling.Visualization.Contracts;
using DslEditorPopups   = Tum.PDE.ToolFramework.Modeling.Visualization.Controls.Popups;
using DslEditorServices = Tum.PDE.ToolFramework.Modeling.Visualization.ViewModel.Services;
using DslEditorCommands = Tum.PDE.ToolFramework.Modeling.Visualization.Commands;
using DslEditorDiagramSurface = Tum.PDE.ToolFramework.Modeling.Visualization.ViewModel.DiagramSurface;

using WPFRibbon = Fluent;

using System;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.Reflection;
using System.Windows.Controls;

using ");

        
        #line default
        #line hidden
        
        #line 30 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Namespace));

        
        #line default
        #line hidden
        
        #line 30 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(".ViewModel;\r\n\r\nnamespace ");

        
        #line default
        #line hidden
        
        #line 32 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Namespace));

        
        #line default
        #line hidden
        
        #line 32 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(".View\r\n{\r\n\t/// <summary>\r\n    /// This class is used as a base class for the main" +
        " window of the editor.\r\n    /// </summary>\r\n\tpublic abstract class DslPluginMain" +
        "Control : UserControl\r\n\t{\r\n\t\t/// <summary>\r\n        /// ");

        
        #line default
        #line hidden
        
        #line 40 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 40 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(" Modeling document data.\r\n        /// </summary>\r\n        protected ");

        
        #line default
        #line hidden
        
        #line 42 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 42 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write("DocumentData DocData = null;\r\n\t\t\r\n        /// <summary>\r\n        /// ");

        
        #line default
        #line hidden
        
        #line 45 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 45 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(" Main view model.\r\n        /// </summary>\r\n        protected ");

        
        #line default
        #line hidden
        
        #line 47 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(dm.Name));

        
        #line default
        #line hidden
        
        #line 47 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(@"MainViewModel ViewModel = null;		

		/*
        /// <summary>
        /// Imported plugins which suffice to the IPlugin interface.
        /// </summary>
		[ImportMany(typeof(DslEditorContracts::IPlugin))]
        public System.Collections.Generic.List<DslEditorContracts::IPlugin> SimplePlugins { get; set; }

		/// <summary>
        /// Imported plugins which suffice to the IPlugin interface.
        /// </summary>
		[ImportMany(typeof(DslEditorContracts::IModelPlugin))]
        public System.Collections.Generic.List<DslEditorContracts::IModelPlugin> SimpleModelPlugins { get; set; }
	
		/// <summary>
        /// Imported plugins which suffice to the IViewModelPlugin interface.
        /// </summary>
        [ImportMany(typeof(DslEditorContracts::IViewModelPlugin))]
        public System.Collections.Generic.List<DslEditorContracts::IViewModelPlugin> ViewModelPlugins { get; set; }
		*/
	
        /// <summary>
        /// Plugins directory.
        /// </summary>
        public const string PluginsDirectory = ""plugins"";

		/// <summary>
        /// Constructor.
        /// </summary>
		public DslPluginMainControl()
		{        
			
		}
		
		/// <summary>
        /// Sets view model.
        /// </summary>
        /// <param name=""viewModel"">VM.</param>
		public virtual void SetViewModel(");

        
        #line default
        #line hidden
        
        #line 86 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Namespace));

        
        #line default
        #line hidden
        
        #line 86 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(".ViewModel.");

        
        #line default
        #line hidden
        
        #line 86 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Name));

        
        #line default
        #line hidden
        
        #line 86 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"
this.Write("MainViewModel viewModel)\r\n\t\t{\r\n\t\t\ttry\r\n            {           \r\n\t\t\t\tthis.ViewMod" +
        "el = viewModel;\r\n                this.DataContext = viewModel;\r\n\r\n            \tv" +
        "iewModel.Ribbon = this.Ribbon;\r\n\t\t\t\tviewModel.RestoreLayout();\r\n\t\t\t}\r\n\t\t\tcatch (" +
        "System.Exception ex)\r\n            {\r\n\t\t\t\tSystem.Windows.MessageBox.Show(\"Error d" +
        "uring initialization: \" + ex.Message);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// Register known windows\r" +
        "\n\t\t\tDslEditorServices::IUIVisualizerService popupVisualizer = ViewModel.GlobalSe" +
        "rviceProvider.Resolve<DslEditorServices::IUIVisualizerService>();\t\t\t\t\r\n\t\t\tpopupV" +
        "isualizer.TryRegister(\"SelectElementPopup\", typeof(DslEditorPopups::SelectElemen" +
        "tPopup));\r\n\t\t\tpopupVisualizer.TryRegister(\"DeleteElementsPopup\", typeof(DslEdito" +
        "rPopups::DeleteElementsPopup));\t\t\t\t\r\n\t\t\tpopupVisualizer.TryRegister(\"SelectEleme" +
        "ntWithRSTypePopup\", typeof(DslEditorPopups::SelectElementWithRSTypePopup));\r\n\t\t\t" +
        "popupVisualizer.TryRegister(\"SelectRSTypePopup\", typeof(DslEditorPopups::SelectR" +
        "STypePopup));\r\n\t\t\t\t\r\n\t\t\t/*\r\n            try\r\n            {\r\n                // l" +
        "oad plugins\r\n                LoadPlugins();\r\n            }\r\n            catch (S" +
        "ystem.Exception ex)\r\n            {\r\n                System.Windows.MessageBox.Sh" +
        "ow(\"Error during plugin loading: \" + ex.Message);\r\n            }*/\r\n\t\t}\r\n\t\t\r\n\t\t/" +
        "*\r\n\t\t/// <summary>\r\n        /// Load plugins.\r\n        /// </summary>\r\n\t\tpublic " +
        "virtual void LoadPlugins()\r\n\t\t{\r\n\t\t\ttry\r\n            {\r\n\t\t\t\tstring path = Assemb" +
        "ly.GetAssembly(this.GetType()).Location;\r\n                string dir = new Syste" +
        "m.IO.FileInfo(path).Directory.FullName;\r\n\r\n                string fullDir = dir " +
        "+ System.IO.Path.DirectorySeparatorChar + PluginsDirectory;\r\n\r\n\r\n\t\t\t\t// Load plu" +
        "gins\r\n                if (!System.IO.Directory.Exists(fullDir))\r\n               " +
        "     System.IO.Directory.CreateDirectory(fullDir);\r\n\r\n                DirectoryC" +
        "atalog directoryCatalog = new DirectoryCatalog(fullDir);\r\n\t\t\t\tCompositionContain" +
        "er container = new CompositionContainer(directoryCatalog);\r\n            \tcontain" +
        "er.ComposeParts(this);\r\n\t\t\t\t\r\n\t\t\t\tif( SimplePlugins.Count > 0 )\r\n\t\t\t\t{\r\n\t\t\t\t\tfor" +
        "each(DslEditorContracts::IPlugin plugin in SimplePlugins)\r\n\t\t\t\t\t\tforeach (Tum.PD" +
        "E.ToolFramework.Modeling.Visualization.ViewModel.ModelContextViewModel mcVM in V" +
        "iewModel.AvailableModelModelContextViewModels)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif( plugin.Model" +
        "Context == mcVM.ModelContext.Name || plugin.ModelContext == null)\r\n\t\t\t\t\t\t\t\tmcVM." +
        "AddPlugin(plugin);\r\n\t\t\t\t\t\t}\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif( SimpleModelPlugins.Count >" +
        " 0 )\r\n\t\t\t\t{\r\n\t\t\t\t\tforeach(DslEditorContracts::IModelPlugin plugin in SimpleModel" +
        "Plugins)\r\n\t\t\t\t\t\tforeach (Tum.PDE.ToolFramework.Modeling.Visualization.ViewModel." +
        "ModelContextViewModel mcVM in ViewModel.AvailableModelModelContextViewModels)\r\n\t" +
        "\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif( plugin.ModelContext == mcVM.ModelContext.Name || plugin.Model" +
        "Context == null)\r\n\t\t\t\t\t\t\t\tmcVM.AddPlugin(plugin);\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tplugin.SetVi" +
        "ewModelStore(ViewModel.ViewModelStore);\r\n\t\t\t\t\t\t}\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif( ViewM" +
        "odelPlugins.Count > 0 )\r\n\t\t\t\t{\r\n\t\t\t\t\tforeach(DslEditorContracts::IViewModelPlugi" +
        "n plugin in ViewModelPlugins)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttry\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tDslEditorDiagr" +
        "amSurface::BaseDiagramSurfaceViewModel vm = plugin.GetViewModel(ViewModel.ViewMo" +
        "delStore);\r\n\t\t\t\t\t\t\tif( vm != null )\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tforeach (Tum.PDE.ToolFram" +
        "ework.Modeling.Visualization.ViewModel.ModelContextViewModel mcVM in ViewModel.A" +
        "vailableModelModelContextViewModels)\r\n                                    if (pl" +
        "ugin.ModelContext == null)\r\n                                        mcVM.AddPlug" +
        "inViewModel(vm);\r\n                                    else if( plugin.ModelConte" +
        "xt == mcVM.ModelContext.Name)\r\n                                        mcVM.AddP" +
        "luginViewModel(vm);\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tSystem.Windows.ResourceDictionary diction" +
        "ary = plugin.GetViewModelRessourceDictionary();\r\n\t\t\t\t\t\t\t\tif( dictionary != null " +
        ")\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tSystem.Windows.Application.Current.Resources.BeginInit();" +
        "\r\n\t\t\t\t\t\t            System.Windows.Application.Current.Resources.MergedDictionar" +
        "ies.Add(dictionary);\r\n            \t\t\t\t\t\tSystem.Windows.Application.Current.Resou" +
        "rces.EndInit();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcatch (System.Exception ex)" +
        "\r\n            \t\t\t{\r\n                \t\t\tSystem.Windows.MessageBox.Show(ex.Message" +
        ");\r\n            \t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n            }\r\n            catch (System.Ex" +
        "ception ex)\r\n            {\r\n                System.Windows.MessageBox.Show(ex.Me" +
        "ssage);\r\n            }\r\n\t\t}\r\n\t\t*/\r\n\r\n\t\t/// <summary>\r\n        /// Gets the WPF r" +
        "ibbon instance.\r\n        /// </summary>\r\n\t\tpublic abstract WPFRibbon::Ribbon Rib" +
        "bon{ get; }\r\n\t\t\r\n        /// <summary>\r\n        /// Clean up.\r\n        /// </sum" +
        "mary>\r\n        public virtual void Dispose()\r\n        {\r\n\t\t\tthis.DataContext = n" +
        "ull;\r\n\t\t\r\n            if (this.ViewModel != null)\r\n            {\r\n              " +
        "  // Unregister known windows\r\n\t\t\t\t/*\r\n                DslEditorServices::IUIVis" +
        "ualizerService popupVisualizer = ViewModel.GlobalServiceProvider.Resolve<DslEdit" +
        "orServices::IUIVisualizerService>();\r\n                popupVisualizer.Unregister" +
        "(\"SelectElementPopup\");\r\n                popupVisualizer.Unregister(\"DeleteEleme" +
        "ntsPopup\");\r\n                popupVisualizer.Unregister(\"SelectElementWithRSType" +
        "Popup\");\r\n                popupVisualizer.Unregister(\"SelectRSTypePopup\");*/\r\n\r\n" +
        "                this.ViewModel.Dispose();\r\n            }\r\n\t\t}\t\t\r\n\t}\r\n}\r\n");

        
        #line default
        #line hidden
        
        #line 229 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\ViewModel\WPFApplication\UIGenerator.tt"

}