code: @Nullable
      Source retrieveSource(
              @NonNull String sourceId,
              @NonNull String clientSecret,
              @NonNull String publishableKey,
              @Nullable String stripeAccount)
              throws AuthenticationException,
              InvalidRequestException,
              APIConnectionException,
              APIException {
          final Map<String, Object> paramMap = SourceParams.createRetrieveSourceParams(clientSecret);
          final RequestOptions options;
          if (stripeAccount == null) {
              options = RequestOptions.builder(publishableKey).build();
          } else {
              options = RequestOptions.builder(publishableKey, stripeAccount,
                      RequestOptions.TYPE_QUERY).build();
          }
          try {
              final StripeResponse response = requestData(RequestExecutor.RestMethod.GET,
                      getRetrieveSourceApiUrl(sourceId), paramMap, options);
              return Source.fromString(response.getResponseBody());
          } catch (CardException unexpected) {
              // This particular kind of exception should not be possible from a Source API endpoint.
              throw new APIException(unexpected.getMessage(), unexpected.getRequestId(),
                      unexpected.getStatusCode(), null, unexpected);
          }
      }
docs: Retrieve an existing {@link Source} object from the server.
  
  @param sourceId the {@link Source#getId()} field for the Source to query
  @param clientSecret the {@link Source#getClientSecret()} field for the Source to query
  @param publishableKey an API key
  @param stripeAccount a connected Stripe Account ID
  @return a {@link Source} if one could be retrieved for the input params, or {@code null} if
  no such Source could be found.
  
  @throws AuthenticationException if there is a problem authenticating to the Stripe API
  @throws InvalidRequestException if one or more of the parameters is incorrect
  @throws APIConnectionException if there is a problem connecting to the Stripe API
  @throws APIException for unknown Stripe API errors. These should be rare.