code: protected TokenResponse executeRefreshToken() throws IOException {
      if (refreshToken == null) {
        return null;
      }
      return new RefreshTokenRequest(transport, jsonFactory, new GenericUrl(tokenServerEncodedUrl),
          refreshToken).setClientAuthentication(clientAuthentication)
          .setRequestInitializer(requestInitializer).execute();
    }
docs: Executes a request for new credentials from the token server.
  
  <p>
  The default implementation calls {@link RefreshTokenRequest#execute()} using the
  {@link #getTransport()}, {@link #getJsonFactory()}, {@link #getRequestInitializer()},
  {@link #getTokenServerEncodedUrl()}, {@link #getRefreshToken()}, and the
  {@link #getClientAuthentication()}. If {@link #getRefreshToken()} is {@code null}, it instead
  returns {@code null}.
  </p>
  
  <p>
  Subclasses may override for a different implementation. Implementations can assume proper
  thread synchronization is already taken care of inside {@link #refreshToken()}.
  </p>
  
  @return successful response from the token server or {@code null} if it is not possible to
  refresh the access token
  @throws TokenResponseException if an error response was received from the token server