code: public static LockingWebDriver createLocking(WebDriver webDriver) {
          ClassLoader    classLoader = webDriver.getClass().getClassLoader();
          List<Class<?>> interfaces  = ClassUtils.getAllInterfaces(webDriver.getClass());
          interfaces.add(LockingWebDriver.class);
          InvocationHandler invocationHandler = new LockingWebDriverInvocationHandler(webDriver);
  
          return (LockingWebDriver) Proxy.newProxyInstance(classLoader,
                                                           interfaces.toArray(new Class[interfaces.size()]),
                                                           invocationHandler);
      }
docs: adds capability to lock your webDriver instance, suitable for concurrent usage
  <p/>
  <pre>
  LockingWebDriver lockingDriver = ConcurrentWebDriverFactory.createLocking(webDriver);
  
  // blocking any other locking request
  lockingDriver.lock();
  
  lockingDriver.get("http://www.lgohlke.de");
  
  lockingDriver.unlock();
  </pre>