### Question:
GenericImpl implements Generic { @Override public Optional<String> getLowerBound() { return Optional.ofNullable(lowerBound); } GenericImpl();  GenericImpl(String lowerBound);  GenericImpl(Type... upperBounds);  GenericImpl(String lowerBound, Type... upperBounds); protected  GenericImpl(Generic prototype); @Override Generic setLowerBound(String lowerBound); @Override Optional<String> getLowerBound(); @Override Generic setBoundType(BoundType type); @Override BoundType getBoundType(); @Override List<Type> getUpperBounds(); @Override Type asType(); @Override GenericImpl copy(); @Override int hashCode(); @Override boolean equals(Object obj);  }### Answer:
@Test void construct() { final GenericImpl generic = new GenericImpl("T"); assertEquals("T", generic.getLowerBound().orElseThrow(NoSuchElementException::new)); }
@Test void getLowerBound() { assertFalse(instance().getLowerBound().isPresent()); }