| Quintiq file version 2.0 | 
| #parent: #root | 
| Method RenameAfterRelation (const Type type, NamedValueTree nvt, NamedValue nv) | 
| { | 
|   Description: | 
|   [* | 
|     Make sure the branches in the named value tree that represent an owning relation are called after the relation name. | 
|     Default is the type name of the owned object. | 
|   *] | 
|   TextBody: | 
|   [* | 
|     traverse( nv.Children(), Elements, child ) | 
|     { | 
|       if( child.GetValue().istype( Key ) ) | 
|       { | 
|         rel := select( LibOpt_Utility::GetTypeAncestors( type ), Elements.MdlRelSideElements.astype( MdlModeledRelSideElement ), rel, | 
|                        rel.OtherSide().Type().Name() = child.Name() | 
|                        and guard( rel.RelationSide().OwningSideBool(), false ) ); | 
|         if( not isnull( rel ) ) | 
|         { | 
|           if( rel.Name() <> child.Name() ) | 
|           { | 
|             new_child := nv.AddChild( nvt.GetHandle( rel.Name() ) ); | 
|             new_child.SetValue( child.GetValue() ); | 
|             child.Move( new_child, true ); | 
|             child.Delete( false ); | 
|             child := new_child; | 
|           } | 
|           this.RenameAfterRelation( rel.OtherSide().Type(), nvt, child ); | 
|         } | 
|       } | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |