Buggy code:
public class BcelTypeMunger extends ConcreteTypeMunger { public BcelTypeMunger ( ResolvedTypeMunger munger , ResolvedTypeX aspectType ) { } public String toString ( ) { } public boolean munge ( BcelClassWeaver weaver ) { } private boolean mungeNewParent ( BcelClassWeaver weaver , NewParentTypeMunger munger ) { } private boolean mungePrivilegedAccess ( BcelClassWeaver weaver , PrivilegedAccessMunger munger ) { } private void addFieldGetter ( LazyClassGen gen , ResolvedMember field , ResolvedMember accessMethod ) { } private void addFieldSetter ( LazyClassGen gen , ResolvedMember field , ResolvedMember accessMethod ) { } private void addMethodDispatch ( LazyClassGen gen , ResolvedMember method , ResolvedMember accessMethod ) { } private LazyMethodGen makeMethodGen ( LazyClassGen gen , ResolvedMember member ) { } private FieldGen makeFieldGen ( LazyClassGen gen , ResolvedMember member ) { } private boolean mungePerObjectInterface ( BcelClassWeaver weaver , PerObjectInterfaceTypeMunger munger ) { } private boolean couldMatch ( BcelObjectType bcelObjectType , Pointcut pointcut ) { } private boolean mungeNewMethod ( BcelClassWeaver weaver , NewMethodTypeMunger munger ) { } private void addNeededSuperCallMethods ( BcelClassWeaver weaver , ResolvedTypeX onType , Set neededSuperCalls ) { } private boolean mungeNewConstructor ( BcelClassWeaver weaver , NewConstructorTypeMunger newConstructorTypeMunger ) { } private static LazyMethodGen makeDispatcher ( LazyClassGen onGen , String dispatchName , ResolvedMember superMethod , BcelWorld world , boolean isSuper ) { } private boolean mungeNewField ( BcelClassWeaver weaver , NewFieldTypeMunger munger ) { <START_BUG> ResolvedMember initMethod = munger . getInitMethod ( aspectType ) ; <END_BUG> LazyClassGen gen = weaver . getLazyClassGen ( ) ; ResolvedMember field = munger . getSignature ( ) ; ResolvedTypeX onType = weaver . getWorld ( ) . resolve ( field . getDeclaringType ( ) ) ; boolean onInterface = onType . isInterface ( ) ; if ( onType . equals ( gen . getType ( ) ) ) { if ( onInterface ) { LazyMethodGen mg = makeMethodGen ( gen , AjcMemberMaker . interFieldInterfaceGetter ( field , onType , aspectType ) ) ; gen . addMethodGen ( mg ) ; LazyMethodGen mg1 = makeMethodGen ( gen , AjcMemberMaker . interFieldInterfaceSetter ( field , onType , aspectType ) ) ; gen . addMethodGen ( mg1 ) ; } else { weaver . addInitializer ( this ) ; FieldGen fg = makeFieldGen ( gen , AjcMemberMaker . interFieldClassField ( field , aspectType ) ) ; gen . addField ( fg . getField ( ) ) ; } return true ; } else if ( onInterface && ( gen . getType ( ) . isTopmostImplementor ( onType ) ) ) { if ( field . isStatic ( ) ) throw new RuntimeException ( "unimplemented" ) ; weaver . addInitializer ( this ) ; Type fieldType = BcelWorld . makeBcelType ( field . getType ( ) ) ; FieldGen fg = makeFieldGen ( gen , AjcMemberMaker . interFieldInterfaceField ( field , onType , aspectType ) ) ; gen . addField ( fg . getField ( ) ) ; LazyMethodGen mg = makeMethodGen ( gen , AjcMemberMaker . interFieldInterfaceGetter ( field , gen . getType ( ) , aspectType ) ) ; InstructionList il = new InstructionList ( ) ; InstructionFactory fact = gen . getFactory ( ) ; if ( field . isStatic ( ) ) { il . append ( fact . createFieldAccess ( gen . getClassName ( ) , fg . getName ( ) , fieldType , GETSTATIC ) ) ; } else { il . append ( ALOAD_0 ) ; il . append ( fact . createFieldAccess ( gen . getClassName ( ) , fg . getName ( ) , fieldType , GETFIELD ) ) ; } il . append ( InstructionFactory . createReturn ( fieldType ) ) ; mg . getBody ( ) . insert ( il ) ; gen . addMethodGen ( mg ) ; LazyMethodGen mg1 = makeMethodGen ( gen , AjcMemberMaker . interFieldInterfaceSetter ( field , gen . getType ( ) , aspectType ) ) ; InstructionList il1 = new InstructionList ( ) ; if ( field . isStatic ( ) ) { il1 . append ( InstructionFactory . createLoad ( fieldType , 0 ) ) ; il1 . append ( fact . createFieldAccess ( gen . getClassName ( ) , fg . getName ( ) , fieldType , PUTSTATIC ) ) ; } else { il1 . append ( ALOAD_0 ) ; il1 . append ( InstructionFactory . createLoad ( fieldType , 1 ) ) ; il1 . append ( fact . createFieldAccess ( gen . getClassName ( ) , fg . getName ( ) , fieldType , PUTFIELD ) ) ; } il1 . append ( InstructionFactory . createReturn ( VOID ) ) ; mg1 . getBody ( ) . insert ( il1 ) ; gen . addMethodGen ( mg1 ) ; return true ; } else { return false ; } } }

Fix:
munger . getInitMethod ( aspectType ) ;