Buggy code:
public class WeaverStateInfo { private List typeMungers ; private boolean oldStyle ; private boolean reweavable ; private boolean reweavableCompressedMode ; private boolean reweavableDiffMode ; private Set aspectsAffectingType ; private byte [ ] unwovenClassFile ; private static boolean reweavableDefault = true ; private static boolean reweavableCompressedModeDefault = false ; private static boolean reweavableDiffModeDefault = true ; private static byte [ ] key = new byte [ ] { - 51 , 34 , 105 , 56 , - 34 , 65 , 45 , 78 , - 26 , 125 , 114 , 97 , 98 , 1 , - 1 , - 42 } ; private boolean unwovenClassFileIsADiff = false ; public WeaverStateInfo ( ) { } public WeaverStateInfo ( boolean reweavable ) { } private WeaverStateInfo ( List typeMungers , boolean oldStyle , boolean reweavableMode , boolean reweavableCompressedMode , boolean reweavableDiffMode ) { } public static void setReweavableModeDefaults ( boolean mode , boolean compress , boolean diff ) { } private static final int UNTOUCHED = 0 ; private static final int WOVEN = 2 ; private static final int EXTENDED = 3 ; private static final byte REWEAVABLE_BIT = 1 << 4 ; private static final byte REWEAVABLE_COMPRESSION_BIT = 1 << 5 ; private static final byte REWEAVABLE_DIFF_BIT = 1 << 6 ; public static final WeaverStateInfo read ( VersionedDataInputStream s , ISourceContext context ) throws IOException { } private static class Entry { public UnresolvedType aspectType ; public ResolvedTypeMunger typeMunger ; public Entry ( UnresolvedType aspectType , ResolvedTypeMunger typeMunger ) { } public String toString ( ) { } } public void write ( DataOutputStream s ) throws IOException { } public void addConcreteMunger ( ConcreteTypeMunger munger ) { } public String toString ( ) { } public List getTypeMungers ( ResolvedType onType ) { World world = onType . getWorld ( ) ; List ret = new ArrayList ( ) ; for ( Iterator i = typeMungers . iterator ( ) ; i . hasNext ( ) ; ) { WeaverStateInfo . Entry entry = ( ( WeaverStateInfo . Entry ) ( i . next ( ) ) ) ; ResolvedType aspectType = world . resolve ( entry . aspectType , true ) ; <START_BUG> if ( aspectType == ( ResolvedType . MISSING ) ) { <END_BUG> world . showMessage ( ERROR , WeaverMessages . format ( ASPECT_NEEDED , entry . aspectType , onType ) , onType . getSourceLocation ( ) , null ) ; continue ; } ret . add ( new org . aspectj . weaver . bcel . BcelTypeMunger ( entry . typeMunger , aspectType ) ) ; } return ret ; } public boolean isOldStyle ( ) { } public byte [ ] getUnwovenClassFileData ( byte [ ] wovenClassFile ) { } public void setUnwovenClassFileData ( byte [ ] data ) { } public boolean isReweavable ( ) { } public void setReweavable ( boolean rw ) { } public void addAspectsAffectingType ( Collection aspects ) { } public void addAspectAffectingType ( String aspectType ) { } public Set getAspectsAffectingType ( ) { } private static void readAnyReweavableData ( WeaverStateInfo wsi , DataInputStream s ) throws IOException { } public byte [ ] replaceKeyWithDiff ( byte [ ] wovenClassFile ) { } private static final int findEndOfKey ( byte [ ] wovenClassFile ) { } private static final boolean endOfKeyHere ( byte [ ] lookIn , int i ) { } private static final byte [ ] insertArray ( byte [ ] toInsert , byte [ ] original , int offset ) { } private static final int readInt ( byte [ ] a , int offset ) { } private static final byte [ ] deleteInArray ( byte [ ] a , int start , int end ) { } byte [ ] generateDiff ( byte [ ] wovenClassFile , byte [ ] unWovenClassFile ) { } byte [ ] applyDiff ( byte [ ] wovenClassFile , byte [ ] diff ) { } private byte [ ] serializeInt ( int i ) { } private static void writeAnyReweavableData ( WeaverStateInfo wsi , DataOutputStream s ) throws IOException { } }

Fix:
if ( aspectType . isMissing ( ) ) {