code: public static <T extends WebDriver> T getEventFiringWebDriver(T driver, Listener ... listeners) {
          return getEventFiringObject(driver, driver, listeners);
      }
docs: This method makes an event firing instance of {@link org.openqa.selenium.WebDriver}.
  
  @param driver an original instance of {@link org.openqa.selenium.WebDriver} that is
  supposed to be listenable
  @param listeners is a set of {@link io.appium.java_client.events.api.Listener} that
  is supposed to be used for the event firing
  @param <T> T
  @return an instance of {@link org.openqa.selenium.WebDriver} that fires events