/**
  * Get a new access token.
  *
  * @return AccessToken|null
  */
 protected function acquireAccessToken()
 {
     $accessToken = null;
     if ($this->refreshTokenGrantType) {
         // Get an access token using the stored refresh token.
         if ($this->refreshToken) {
             $this->refreshTokenGrantType->setRefreshToken($this->refreshToken->getToken());
         }
         if ($this->refreshTokenGrantType->hasRefreshToken()) {
             $accessToken = $this->refreshTokenGrantType->getToken();
         }
     }
     if (!$accessToken && $this->grantType) {
         // Get a new access token.
         $accessToken = $this->grantType->getToken();
     }
     return $accessToken ?: null;
 }
 /**
  * Get a new access token.
  *
  * @return AccessToken|null
  */
 protected function acquireAccessToken()
 {
     if ($this->refreshTokenGrantType) {
         // Get an access token using the stored refresh token.
         if ($this->accessToken instanceof AccessToken && $this->accessToken->getRefreshToken() instanceof AccessToken && $this->accessToken->isExpired()) {
             $this->refreshTokenGrantType->setRefreshToken($this->accessToken->getRefreshToken()->getToken());
             $this->accessToken = $this->refreshTokenGrantType->getToken();
         }
     }
     if ((!$this->accessToken || $this->accessToken->isExpired()) && $this->grantType) {
         // Get a new access token.
         $this->accessToken = $this->grantType->getToken();
     }
     return $this->accessToken;
 }