### Question:
BaseHook extends DefaultFluentContainer implements FluentHook<T> { @Override public T getOptions() { return options; } BaseHook(FluentControl control, ComponentInstantiator instantiator, Supplier<WebElement> elementSupplier,
            Supplier<ElementLocator> locatorSupplier, Supplier<String> toStringSupplier, T options); final WebElement getElement(); @Override WebElement getWrappedElement(); final ElementLocator getElementLocator(); Coordinates getCoordinates(); ComponentInstantiator getInstantiator(); @Override T getOptions(); @Override String toString(); void sendKeys(CharSequence... charSequences); X getScreenshotAs(OutputType<X> outputType); WebElement findElement(By by); boolean isSelected(); Rectangle getRect(); boolean isDisplayed(); boolean isEnabled(); List<WebElement> findElements(By by); void submit(); String getCssValue(String propertyName); String getTagName(); Point getLocation(); Dimension getSize(); String getText(); void click(); String getAttribute(String name); void clear(); WebElement findElement(); List<WebElement> findElements();  }### Answer:
@Test public void testNoOptionHook() { Object defaultOptions = new Object(); BaseHook noOptionHook = new BaseHook<Object>(fluentAdapter, instantiator, () -> element, () -> locator, () -> "hook", null) { @Override protected Object newOptions() { return defaultOptions; } }; assertThat(noOptionHook.getOptions()).isSameAs(defaultOptions); }
@Test public void testNoOptionHookWithoutDefault() { BaseHook noOptionHook = new BaseHook<>(fluentAdapter, instantiator, () -> element, () -> locator, () -> "hook", null); assertThat(noOptionHook.getOptions()).isNull(); }