code: protected function getOverduePagesForOwners(SS_List $pages)
      {
          $overduePages = [];
  
          foreach ($pages as $page) {
              if (!$page->canBeReviewedBy()) {
                  continue;
              }
  
              // get most recent review log of current [age]
              $contentReviewLog = $page->ReviewLogs()->sort('Created DESC')->first();
  
              // check log date vs NextReviewDate. If someone has left a content review
              // after the review date, then we don't need to notify anybody
              if ($contentReviewLog && $contentReviewLog->Created >= $page->NextReviewDate) {
                  $page->advanceReviewDate();
                  continue;
              }
  
              $options = $page->getOptions();
  
              if ($options) {
                  foreach ($options->ContentReviewOwners() as $owner) {
                      if (!isset($overduePages[$owner->ID])) {
                          $overduePages[$owner->ID] = ArrayList::create();
                      }
  
                      $overduePages[$owner->ID]->push($page);
                  }
              }
          }
  
          return $overduePages;
      }
docs: @param SS_List $pages
  
  @return array