{
// jdoStateManager
il.append(InstructionConstants.ALOAD_0);
il.append(factory.createGetField(className, ClassEnhancer.FN_StateManager, BCELClassEnhancer.OT_StateManager));
//if (jdoStateManager == null)
IFNULL ifnull = new IFNULL(null);
il.append(ifnull);
// jdoStateManager
il.append(InstructionConstants.ALOAD_0);
il.append(factory.createGetField(className, ClassEnhancer.FN_StateManager, BCELClassEnhancer.OT_StateManager));
// jdoStateManager.isDirty()
il.append(InstructionConstants.ALOAD_0);
il.append(factory.createInvoke(ClassEnhancer.CN_StateManager, "isDirty", Type.BOOLEAN, new Type[]{BCELClassEnhancer.OT_PersistenceCapable},
Constants.INVOKEINTERFACE));
if (!enhancer.getClassMetaData().isDetachable())
{
GOTO go = new GOTO(null);
il.append(go);
InstructionHandle ifnullTarget = il.append(InstructionConstants.ICONST_0);
InstructionHandle gotoTarget = il.append(InstructionConstants.IRETURN);
ifnull.setTarget(ifnullTarget);
go.setTarget(gotoTarget);
}
else
{
il.append(InstructionConstants.IRETURN);
// jdoIsDetached()
ifnull.setTarget(il.append(InstructionConstants.ALOAD_0));
il.append(factory.createInvoke(ClassEnhancer.CN_PersistenceCapable, ClassEnhancer.MN_JdoIsDetached,
Type.BOOLEAN, Type.NO_ARGS, Constants.INVOKEINTERFACE));
// 1
il.append(InstructionConstants.ICONST_1);