/**
  * Client
  *
  * @param string $product
  * @param float|int|string|null $version
  * @param int|null $statusCode
  * @return UserAgentClient
  */
 public function client($product = self::USER_AGENT, $version = null, $statusCode = null)
 {
     $userAgentString = $version === null ? $product : $product . '/' . $version;
     $match = $userAgentString;
     if (!isset($this->handler[$userAgentString])) {
         // User-agent does not match any rule sets
         $userAgentParser = new UserAgentStringParser($product, $version);
         if (($match = $userAgentParser->getMostSpecific($this->getUserAgents())) === false) {
             $match = self::USER_AGENT;
         }
     }
     return new UserAgentClient($this->handler[$match], $this->base, $statusCode, $product);
 }
 /**
  * Find the most rule-matching User-Agent
  *
  * @return string
  */
 protected function matchUserAgent()
 {
     $userAgentParser = new UserAgentParser($this->userAgent);
     $this->userAgentMatch = ($match = $userAgentParser->getMostSpecific(array_keys($this->rules))) !== false ? $match : self::USER_AGENT;
     return $this->userAgentMatch;
 }