@Override
 public void process(IIdRequest request) {
   checkConnection();
   init();
   if (request.getId() != null) {
     existsResponseMap.put(request.getId(), VOID_RESULT);
   }
   // TODO: block any request with No ID !!
   client.sendRequest(request);
 }
  @Override
  public ITestResult processAndWaitForValue(IIdRequest request)
      throws IllegalAccessException, TimeoutException, ErrorResultReceivedException {

    final String idRequest = request.getId();
    if (idRequest == null) {
      throw new IllegalAccessException("Request requires an Id to wait for a value.");
    }
    init();
    valueResponseMap.put(idRequest, VOID_RESULT);
    client.sendRequest(request);
    ValueResponse valueResponse = waitForValue(request);
    ITestResult res = new SuccessResult(valueResponse.value);
    res.setScreenShot(valueResponse.getBase64ScreenShot());
    return res;
  }
 /**
  * to call before any request
  *
  * @return
  */
 public void init() {
   checkConnection();
   InitInspectionRequest request = new InitInspectionRequest();
   client.sendRequest(request);
 }