MethodVisitor mv = cv.visitMethod
(ACC_PUBLIC, "bdbSetField",
"(Ljava/lang/Object;IIZLjava/lang/Object;)V", null, null);
mv.visitCode();
mv.visitVarInsn(ILOAD, 3);
Label l0 = new Label();
mv.visitJumpInsn(IFLE, l0);
if (hasPersistentSuperclass) {
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitVarInsn(ILOAD, 2);
mv.visitVarInsn(ILOAD, 3);
mv.visitInsn(ICONST_1);
mv.visitInsn(ISUB);
mv.visitVarInsn(ILOAD, 4);
mv.visitVarInsn(ALOAD, 5);
mv.visitMethodInsn
(INVOKESPECIAL, className, "bdbSetField",
"(Ljava/lang/Object;IIZLjava/lang/Object;)V");
}
mv.visitInsn(RETURN);
mv.visitLabel(l0);
mv.visitVarInsn(ILOAD, 4);
Label l2 = new Label();
mv.visitJumpInsn(IFEQ, l2);
Label l1 = new Label();
genSetFieldSwitch(mv, secKeyFields, l1);
mv.visitLabel(l2);
genSetFieldSwitch(mv, nonKeyFields, l1);
mv.visitLabel(l1);
mv.visitInsn(RETURN);