public function getPaginatedTopMilestones(PFUser $user, Project $project, Tuleap\AgileDashboard\Milestone\Criterion\ISearchOnStatus $criterion, $limit, $offset, $order)
 {
     $top_milestones = array();
     $total_size = 0;
     $virtual_milestone = $this->getVirtualTopMilestone($user, $project);
     $root_planning = $this->planning_factory->getRootPlanning($user, $virtual_milestone->getProject()->getID());
     $milestone_planning_tracker_id = $virtual_milestone->getPlanning()->getPlanningTrackerId();
     if ($milestone_planning_tracker_id) {
         $top_milestone_artifacts = $this->milestone_dao->searchPaginatedTopMilestones($milestone_planning_tracker_id, $criterion, $limit, $offset, $order);
         $total_size = $this->milestone_dao->foundRows();
         $top_milestones = $this->convertDarToArrayOfMilestones($user, $virtual_milestone, $top_milestone_artifacts);
     }
     return new AgileDashboard_Milestone_PaginatedMilestones($top_milestones, $total_size);
 }