GenericImpl implements Generic { @Override public List<Type> getUpperBounds() { return upperBounds; } 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 construct2() { final GenericImpl generic = new GenericImpl(int.class, long.class); assertEquals(Stream.of(int.class, long.class).collect(toList()), generic.getUpperBounds()); }
@Test void getUpperBounds() { assertTrue(instance().getUpperBounds().isEmpty()); }