Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method GetIncludedUnits () as owning Units 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Traverse Entity and get all Unit included 
 | 
    includedUnit := construct( Units ); 
 | 
     
 | 
    if( this.IsWorld() ) 
 | 
    { 
 | 
      includedUnit := this.MacroPlan().Unit( relget ); 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
      rootUnit := this.MacroPlan().RootUnit( relget ); 
 | 
       
 | 
      // Traverse from root such that it guaranteed only visited each unit once 
 | 
      traverse( rootUnit, Elements, unit ) 
 | 
      { 
 | 
        subSet := this.GetSubsetUnit( unit ); 
 | 
        localIsIncluded := isnull( subSet ) or subSet.IsIncluded(); // Include, when product have subset is included and Include when no subset 
 | 
         
 | 
        if( localIsIncluded ) 
 | 
        { 
 | 
          includedUnit.Add( unit ); 
 | 
        }         
 | 
         
 | 
        local := unit.GetDecendentsInOptimizerSubset( this,  
 | 
                                                      localIsIncluded ); 
 | 
         
 | 
        includedUnit := includedUnit.Union( local );                                                                                                           
 | 
      } 
 | 
    } 
 | 
     
 | 
    return &includedUnit; 
 | 
  *] 
 | 
} 
 |