/// <summary>
		/// Constructor
		/// Creates a ParentOf link in the same Partition as the given FamilyTreePerson
		/// </summary>
		/// <param name="source">FamilyTreePerson to use as the source of the relationship.</param>
		/// <param name="target">FamilyTreePerson to use as the target of the relationship.</param>
		public ParentOf(FamilyTreePerson source, FamilyTreePerson target)
			: base((source != null ? source.Partition : null), new DslModeling::RoleAssignment[]{new DslModeling::RoleAssignment(ParentOf.ParentDomainRoleId, source), new DslModeling::RoleAssignment(ParentOf.ChildDomainRoleId, target)}, Tum.FamilyTreeDSL.FamilyTreeDSLDomainModelIdProvider.Instance.CreateId())
		{
		}
		public static DslModeling::LinkedElementCollection<FamilyTreePerson> GetChildren(FamilyTreePerson element)
		{
			return GetRoleCollection<DslModeling::LinkedElementCollection<FamilyTreePerson>, FamilyTreePerson>(element, ParentDomainRoleId);
		}
		public static void SetFamilyTreePerson(Pet element, FamilyTreePerson newFamilyTreePerson)
		{
			DslModeling::DomainRoleInfo.SetLinkedElement(element, PetDomainRoleId, newFamilyTreePerson);
		}
		public static DslModeling::LinkedElementCollection<Pet> GetPet(FamilyTreePerson element)
		{
			return GetRoleCollection<DslModeling::LinkedElementCollection<Pet>, Pet>(element, FamilyTreePersonDomainRoleId);
		}
		public static void SetWife(FamilyTreePerson element, FamilyTreePerson newWife)
		{
			DslModeling::DomainRoleInfo.SetLinkedElement(element, HusbandDomainRoleId, newWife);
		}
		/// <summary>
		/// Constructor
		/// Creates a FamilyTreePersonHasPet link in the same Partition as the given FamilyTreePerson
		/// </summary>
		/// <param name="source">FamilyTreePerson to use as the source of the relationship.</param>
		/// <param name="target">Pet to use as the target of the relationship.</param>
		public FamilyTreePersonHasPet(FamilyTreePerson source, Pet target)
			: base((source != null ? source.Partition : null), new DslModeling::RoleAssignment[]{new DslModeling::RoleAssignment(FamilyTreePersonHasPet.FamilyTreePersonDomainRoleId, source), new DslModeling::RoleAssignment(FamilyTreePersonHasPet.PetDomainRoleId, target)}, Tum.FamilyTreeDSL.FamilyTreeDSLDomainModelIdProvider.Instance.CreateId())
		{
		}
		public static void SetFamilyTreeModel(FamilyTreePerson element, FamilyTreeModel newFamilyTreeModel)
		{
			DslModeling::DomainRoleInfo.SetLinkedElement(element, FamilyTreePersonDomainRoleId, newFamilyTreeModel);
		}
		public static FamilyTreePerson GetWife(FamilyTreePerson element)
		{
			return DslModeling::DomainRoleInfo.GetLinkedElement(element, HusbandDomainRoleId) as FamilyTreePerson;
		}
		public static void SetHusband(FamilyTreePerson element, FamilyTreePerson newHusband)
		{
			DslModeling::DomainRoleInfo.SetLinkedElement(element, WifeDomainRoleId, newHusband);
		}
		public static FamilyTreeModel GetFamilyTreeModel(FamilyTreePerson element)
		{
			return DslModeling::DomainRoleInfo.GetLinkedElement(element, FamilyTreePersonDomainRoleId) as FamilyTreeModel;
		}
		/// <summary>
		/// Constructor
		/// Creates a MarriedTo link in the same Partition as the given FamilyTreePerson
		/// </summary>
		/// <param name="source">FamilyTreePerson to use as the source of the relationship.</param>
		/// <param name="target">FamilyTreePerson to use as the target of the relationship.</param>
		public MarriedTo(FamilyTreePerson source, FamilyTreePerson target)
			: base((source != null ? source.Partition : null), new DslModeling::RoleAssignment[]{new DslModeling::RoleAssignment(MarriedTo.HusbandDomainRoleId, source), new DslModeling::RoleAssignment(MarriedTo.WifeDomainRoleId, target)}, Tum.FamilyTreeDSL.FamilyTreeDSLDomainModelIdProvider.Instance.CreateId())
		{
		}