docs: private DirectoryServiceClient decideClient(){
          DirectoryServiceClient client;
          switch (config.getClientType()) {
              case RESTFUL:
                  client = restfulClient;
                  break;
              case DUMMY:
                  client = dummyClient;
                  break;
              case IN_MEMORY:
                  client = new DirectoryServiceInMemoryClient();
                  break;
              case PROVIDED:
                  DirectoryServiceClientProvider provider = clientProvider.get();
                  if (provider != null) {
                      client = provider.getClient();
                  } else {
                      throw new IllegalStateException("No DirectoryServiceClientProvider is set up for Client Type PROVIDED");
                  }
                  break;
              default:
                  //don't support other client type now.
                  throw new IllegalStateException("UNKNOWN Client Type " + config.getClientType());
          }
          return client;
      }