public JavaClass generate(SourceOfRandomness r, GenerationStatus s) {
constants = new ConstantPoolGen();
String className = "example.A";
String superName = r.nextBoolean() ? "example.B" : "java.lang.Object";
String fileName = "A.class";
int flags = r.nextInt(0, Short.MAX_VALUE);
int numInterfaces = r.nextBoolean() ? 0 : geom.sampleWithMean(MEAN_INTERFACE_COUNT, r);
String[] interfaces = new String[numInterfaces];
for (int i = 0; i < numInterfaces; i++) {
interfaces[i] = "example.I"+i;
}
ClassGen classGen = new ClassGen(className, superName, fileName, flags, interfaces, constants);
Assume.assumeFalse(classGen.isFinal() && (classGen.isAbstract() | classGen.isInterface()));
int numFields = geom.sampleWithMean(MEAN_FIELDS_COUNT, r);
for (int i = 0; i < numFields; i++) {
classGen.addField(generateField(r));
}
int numMethods = geom.sampleWithMean(MEAN_METHODS_COUNT, r);
for (int i = 0; i < numMethods; i++) {
classGen.addMethod(generateMethod(className, r));
}
return classGen.getJavaClass();
}