code: public static StitchAppClient initializeAppClient(
        @Nonnull final String clientAppId,
        @Nonnull final StitchAppClientConfiguration config
    ) {
      if (clientAppId == null || clientAppId.isEmpty()) {
        throw new IllegalArgumentException("clientAppId must be set to a non-empty string");
      }
  
      final StitchAppClientImpl client;
      synchronized (Stitch.class) {
        if (appClients.containsKey(clientAppId)) {
          throw new IllegalStateException(
              String.format("client for app '%s' has already been initialized", clientAppId));
        }
  
        final StitchAppClientConfiguration.Builder builder = config.builder();
        if (builder.getStorage() == null) {
          builder.withStorage(new MemoryStorage());
        }
        if (builder.getTransport() == null) {
          builder.withTransport(new OkHttpTransport());
        }
        if (builder.getDefaultRequestTimeout() == null) {
          builder.withDefaultRequestTimeout(DEFAULT_DEFAULT_REQUEST_TIMEOUT);
        }
        if (builder.getBaseUrl() == null || builder.getBaseUrl().isEmpty()) {
          builder.withBaseUrl(DEFAULT_BASE_URL);
        }
        if (builder.getNetworkMonitor() == null) {
          builder.withNetworkMonitor(new ServerNetworkMonitor());
        }
  
        client = new StitchAppClientImpl(clientAppId, builder.build());
        appClients.put(clientAppId, client);
      }
      return client;
    }
docs: Initializes an app client for Stitch to use when using {@link Stitch#getAppClient(String)}}.
  Can only be called once per client app id.
  
  @param clientAppId the client app id to initialize an app client for.
  @param config the configuration to use to build the app client.
  @return the app client that was just initialized.