| Quintiq file version 2.0 | 
| #parent: #root | 
| DeclarativeOwningNMRelation CalcIterationPartNM | 
| { | 
|   #keys: '1[139544.3.97808376]' | 
|   Expression: | 
|   [* | 
|     set := this.SnapshotOwning().IterationPart( relget ); | 
|     parent := this.SnapshotOwning().IterationPart().Parent(); | 
|      | 
|     // Unrolled recursive calling of .Parent() in order to get all ancestors | 
|     // We expect unrolling 10 times should be enough. This is equal to 10 iterators in a path. | 
|      | 
|     if( not isnull( parent ) ) // Depth 1 | 
|     { | 
|       set := set.Union( parent ); | 
|       parent := parent.Parent(); | 
|       if( not isnull( parent ) ) // Depth 2 | 
|       { | 
|         set := set.Union( parent ); | 
|         parent := parent.Parent(); | 
|         if( not isnull( parent ) ) // Depth 3 | 
|         { | 
|           set := set.Union( parent ); | 
|           parent := parent.Parent(); | 
|           if( not isnull( parent ) ) // Depth 4 | 
|           { | 
|             set := set.Union( parent ); | 
|             parent := parent.Parent(); | 
|             if( not isnull( parent ) ) // Depth 5 | 
|             { | 
|               set := set.Union( parent ); | 
|               parent := parent.Parent(); | 
|               if( not isnull( parent ) ) // Depth 6 | 
|               { | 
|                 set := set.Union( parent ); | 
|                 parent := parent.Parent(); | 
|                 if( not isnull( parent ) ) // Depth 7 | 
|                 { | 
|                   set := set.Union( parent ); | 
|                   parent := parent.Parent(); | 
|                   if( not isnull( parent ) ) // Depth 8 | 
|                   { | 
|                     set := set.Union( parent ); | 
|                     parent := parent.Parent(); | 
|                     if( not isnull( parent ) ) // Depth 9 | 
|                     { | 
|                       set := set.Union( parent ); | 
|                       parent := parent.Parent(); | 
|                       if( not isnull( parent ) ) // Depth 10 | 
|                       { | 
|                         set := set.Union( parent ); | 
|                         parent := parent.Parent(); | 
|                       } | 
|                     } | 
|                   } | 
|                 } | 
|               } | 
|             } | 
|           } | 
|         } | 
|       } | 
|     } | 
|      | 
|     return & set; | 
|   *] | 
|   HelperRelation: IterationPart | 
|   InstantiationType: LibOpt_IterationPartNM | 
|   Relation: IterationPartNM | 
| } |