@SuppressWarnings("unchecked")
@Test
public void testDefineAbstractClassWithAbstractMethods2() {
final String cls = ClassBuilder
.define("org.foo.Foo")
.publicScope()
.abstractClass()
.body()
.publicConstructor()
.finish()
.publicAbstractMethod(MetaClassFactory.get(String.class), "someString").finish()
.publicAbstractMethod(Integer.class, "someInteger", Parameter.finalOf(long.class, "aLong")).finish()
.publicAbstractMethod(void.class, "foo", String.class, Integer.class).throws_(Throwable.class)
.protectedAbstractMethod(void.class, "bar", Long.class, Double.class).throws_(UnsupportedOperationException.class)
.protectedAbstractMethod(Long.class, "funTimes", Parameter.finalOf(String.class, "str")).finish()
.packageAbstractMethod(void.class, "foobaz", Map.class) .throws_(MetaClassFactory.get(ClassNotFoundException.class))
.packageAbstractMethod(Float.class, "boringTimes", Parameter.of(byte[].class, "byteArr")).finish()
.publicMethod(void.class, "baz")
.finish()
.toJavaString();
assertEquals(ABSTRACT_CLASS_WITH_ABSTRACT_METHODS_2, cls);
}