@Override
  public @Nullable String askPassword(@NotNull String url) {
    myWasRequested = true;

    ProviderAndData providerAndData = myProviderAndData;
    if (providerAndData != null && providerAndData.myProvider instanceof CancelledProvider) {
      LOG.debug("askPassword. Auth was cancelled.");
      return null;
    }

    if (providerAndData != null) {
      LOG.debug("askPassword. Data already filled in askUsername.");
      return providerAndData.getPassword();
    }

    Couple<String> usernameAndUrl = splitToUsernameAndUrl(getRequiredUrl(url));
    // should be provided in URL or in askUsername together with password
    final String login = usernameAndUrl.first;
    if (login == null) {
      LOG.debug("askPassword. login unknown, cannot determine password without login");
      return "";
    }
    String urlWithoutUsername = usernameAndUrl.second;
    LOG.debug("askPassword. gitUrl=" + url + ", urlWithoutUsername=" + urlWithoutUsername);

    ProviderAndData newData = acquireData(urlWithoutUsername, provider -> provider.getDataForKnownLogin(login));
    myProviderAndData = newData;

    if (newData != null) {
      LOG.debug("askPassword. " + newData);
      return newData.getPassword();
    }
    else {
      LOG.debug("askPassword. no data provided");
      return "";
    }
  }
@Override
  public @Nullable String askPassword(@NotNull String url)