}
static byte[] make_tuple_class_data(int num_cells) {
ClassWriter cww = new ClassWriter(ClassWriter.COMPUTE_FRAMES|ClassWriter.COMPUTE_MAXS);
CheckClassAdapter cw = new CheckClassAdapter(cww);
String this_class_name = ETUPLE_NAME + num_cells;
String super_class_name = ETUPLE_NAME;
cw.visit(Opcodes.V1_4, Opcodes.ACC_PUBLIC | Opcodes.ACC_SUPER,
this_class_name, null, super_class_name, null);
// create fields
for (int i = 1; i <= num_cells; i++) {
cw.visitField(Opcodes.ACC_PUBLIC, "elem" + i, ETERM_TYPE
.getDescriptor(), null, null);
}
// create count method
create_count(cw, num_cells);
// create cast method
create_cast(cw, num_cells);
create_cast2(cw, num_cells);
// create constructor
create_constructor(cw, super_class_name);
// create copy
create_tuple_copy(num_cells, cw, this_class_name, super_class_name);
create_tuple_make(num_cells, cw, this_class_name, super_class_name);
create_tuple_make2(num_cells, cw, this_class_name, super_class_name);
// create nth
create_tuple_nth(num_cells, cw, this_class_name);
// create set
create_tuple_set(num_cells, cw, this_class_name);
cw.visitEnd();
byte[] data = cww.toByteArray();
// dump(this_class_name, data);
return data;