/**
  * Filter the parsed result to the schema.
  *
  * @param  \Detection\MobileDetect $parsed
  * @return array
  */
 public function filter($parsed)
 {
     $filtered = array();
     // Filtering mechanishm for MobileDetect 2.* versions.
     $filter = function ($items) use($parsed) {
         // Play down the $parsed->is('Android'); mechanishm.
         foreach ($items as $key => $regex) {
             if ($parsed->is($key)) {
                 return $key;
             }
         }
         return null;
     };
     // Operating system's family.
     $filtered['osFamily'] = $filter($parsed->getOperatingSystems());
     // Browser's family.
     $filtered['browserFamily'] = $filter($parsed->getBrowsers());
     // Just 'mobile' kind devices.
     if ($parsed->isMobile() and !$parsed->isTablet()) {
         $filtered['isMobile'] = true;
         $filtered['mobileGrade'] = $parsed->mobileGrade();
         $filtered['deviceModel'] = $filter($parsed->getPhoneDevices());
     } elseif ($parsed->isTablet()) {
         $filtered['isTablet'] = true;
         $filtered['mobileGrade'] = $parsed->mobileGrade();
         $filtered['deviceModel'] = $filter($parsed->getTabletDevices());
     }
     // Clear the generic and null values.
     $filtered = array_filter(array_filter($filtered, function ($value) {
         return !preg_match('%^generic%i', $value);
     }));
     return $filtered;
 }