GenericImpl implements Generic { @Override public Generic setBoundType(BoundType type) { this.type = type; return this; } 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);  }
@Test void setBoundType() { instance().setBoundType(Generic.BoundType.SUPER); assertEquals(Generic.BoundType.SUPER, instance().getBoundType()); }