DATypeFactory { @Nonnull public static DAType wildcardWithSuperBound(@Nonnull DAType superbound) { return DATypeImpl.typeBuilder(DATypeKind.WILDCARD, DANameFactory.wildcard()) .withSuperBound(superbound) .build(); } private  DATypeFactory(); @Nonnull static DAType voidDaType(); @Nonnull static DAType from(@Nonnull Class<?> clazz); @Nonnull static DAType from(@Nonnull Class<?> clazz, @Nonnull List<DAType> typeArgs); @Nonnull static DAType declared(@Nonnull String qualifiedName); @Nonnull static DAType declared(@Nonnull String qualifiedName, @Nonnull List<DAType> typeArgs); @Nonnull static DAType wildcardWithSuperBound(@Nonnull DAType superbound); @Nonnull static DAType wildcardWithExtendsBound(@Nonnull DAType extendsBound);  }
@Test public void wildcardWithSuperBound() throws Exception { DAType superBound = DATypeFactory.from(getClass()); DAType daType = DATypeFactory.wildcardWithSuperBound(superBound); assertThat(daType.getKind()).isEqualTo(DATypeKind.WILDCARD); assertThat(daType.getSimpleName()).isEqualTo(DANameFactory.wildcard()); assertThat(daType.getSuperBound()).isSameAs(superBound); }