code: public Future<AuthenticationResult> acquireTokenByRefreshToken(
              final String refreshToken,
              final AsymmetricKeyCredential credential, final String resource,
              final AuthenticationCallback callback)
              throws AuthenticationException {
  
          return acquireTokenByRefreshToken(
                  refreshToken,
                  credential.getClientId(),
                  JwtHelper.buildJwt(credential,
                          this.authenticationAuthority.getSelfSignedJwtAudience()),
                  resource, callback);
      }
docs: Acquires a security token from the authority using a Refresh Token
  previously received.
  
  @param refreshToken
  Refresh Token to use in the refresh flow.
  @param credential
  object representing Private Key to use for token acquisition.
  @param resource
  Identifier of the target resource that is the recipient of the
  requested token. If null, token is requested for the same
  resource refresh token was originally issued for. If passed,
  resource should match the original resource used to acquire
  refresh token unless token service supports refresh token for
  multiple resources.
  @param callback
  optional callback object for non-blocking execution.
  @return A {@link Future} object representing the
  {@link AuthenticationResult} of the call. It contains Access
  Token, Refresh Token and the Access Token's expiration time.
  @throws AuthenticationException
  thrown if {@link AsymmetricKeyCredential} fails to sign the
  JWT token.