/**
  * Retrieve a set of products, based on the given parameters.
  * Add Parent Group Pages to diplay within list.
  *
  * Note that you can hide the "top level"
  * @return DataObjectSet | Null
  */
 public function currentFinalProducts($alternativeSort = null)
 {
     $products = parent::currentFinalProducts($alternativeSort);
     if ($products) {
         foreach ($products as $product) {
             $product->ParentSegments = null;
             if ($this->NumberOfLevelsToHide < 20) {
                 $segmentArray = array();
                 $item = $product;
                 while ($item && $item->ParentID) {
                     $item = ProductGroup::get()->byID($item->ParentID);
                     if ($item) {
                         $segmentArray[] = array("URLSegment" => $item->URLSegment, "ID" => $item->ID, "ClassName" => $item->ClassName, "Title" => $item->Title, "Link" => $item->Link());
                     }
                 }
                 if (count($segmentArray)) {
                     $product->ParentSegments = new ArrayList();
                     $segmentArray = array_reverse($segmentArray);
                     foreach ($segmentArray as $key => $segment) {
                         if ($key > $this->NumberOfLevelsToHide) {
                             $product->ParentSegments->push(new ArrayData($segment));
                         }
                     }
                 }
             }
         }
     }
     return $products;
 }