code: public synchronized <T> T getServiceClient(S adsSession, Class<T> interfaceClass)
        throws ServiceException {
      adsServiceFactoryHelper.checkServiceClientPreconditions(adsSession, interfaceClass);
      String version = adsServiceFactoryHelper.determineVersion(interfaceClass);
      D adsServiceDescriptor =
          adsServiceFactoryHelper.createServiceDescriptor(interfaceClass, version);
      C adsServiceClient =
          adsServiceFactoryHelper.createAdsServiceClient(adsServiceDescriptor, adsSession);
      return createProxy(interfaceClass, adsServiceClient);
    }
docs: Gets a client given a session and the class of the desired stub interface.
  
  @param <T> the service type
  @param adsSession the session associated with the desired
  client
  @param interfaceClass the class type of the desired client
  @return a client for the specified ads service
  @throws ServiceException if the service client could not be created