/**
  * @param required {@link WebdriverComponent} subclass
  * @param params is a Class[] which excludes {@link WebDriver}.class {@link WebDriver} + given
  *     Class[] should match to {@link WebdriverComponent} subclass constructor parameters
  * @param values is a Object[] which excludes {@link WebDriver} instance {@link WebDriver}
  *     instance + given Object[] should match to {@link WebdriverComponent} subclass constructor
  * @return The instance of required {@link WebdriverComponent} subclass
  */
 public <T extends WebdriverComponent> T getComponent(
     Class<T> required, Class<?>[] params, Object[] values) {
   return ComponentFactory.getComponent(required, enclosedDriver, params, values);
 }
 /**
  * @param required {@link WebdriverComponent} subclass
  * @return The instance of required {@link WebdriverComponent} subclass
  */
 public <T extends WebdriverComponent> T getComponent(Class<T> required) {
   return ComponentFactory.getComponent(required, enclosedDriver);
 }