/**
  * {@inheritdoc}
  */
 public function getToken()
 {
     if (!$this->hasRefreshToken()) {
         throw new \RuntimeException('Refresh token not available');
     }
     return parent::getToken();
 }
 /**
  * {@inheritdoc}
  */
 protected function getRequired()
 {
     return array_merge(parent::getRequired(), [self::CONFIG_USERNAME => '', self::CONFIG_PASSWORD => '']);
 }
 /**
  * {@inheritdoc}
  */
 protected function getRequired()
 {
     return array_merge(parent::getRequired(), [self::CONFIG_CODE => '']);
 }
 /**
  * @inheritdoc
  */
 protected function getRequired()
 {
     return array_merge(parent::getRequired(), ['username', 'password']);
 }
 /**
  * @inheritdoc
  */
 protected function getDefaults()
 {
     return parent::getDefaults() + ['refresh_token' => ''];
 }
 /**
  * @inheritdoc
  */
 protected function getRequired()
 {
     return array_merge(parent::getRequired(), ['code']);
 }