Buggy code:
public abstract class Shadow { private static int nextShadowID = 100 ; private final Shadow . Kind kind ; private final Member signature ; private ResolvedMember resolvedSignature ; protected final Shadow enclosingShadow ; protected List mungers = new ArrayList ( 1 ) ; public int shadowId = ( Shadow . nextShadowID ) ++ ; protected Shadow ( Shadow . Kind kind , Member signature , Shadow enclosingShadow ) { } public abstract World getIWorld ( ) { } public List getMungers ( ) { } public final boolean hasThis ( ) { } public final UnresolvedType getThisType ( ) { } public abstract Var getThisVar ( ) { } public final boolean hasTarget ( ) { } public final UnresolvedType getTargetType ( ) { } public abstract Var getTargetVar ( ) { } public UnresolvedType [ ] getArgTypes ( ) { } public UnresolvedType [ ] getGenericArgTypes ( ) { } public UnresolvedType getArgType ( int arg ) { } public int getArgCount ( ) { } public abstract UnresolvedType getEnclosingType ( ) { } public abstract Var getArgVar ( int i ) { } public abstract Var getThisJoinPointVar ( ) { } public abstract Var getThisJoinPointStaticPartVar ( ) { } public abstract Var getThisEnclosingJoinPointStaticPartVar ( ) { } public abstract Var getKindedAnnotationVar ( UnresolvedType forAnnotationType ) { } public abstract Var getWithinAnnotationVar ( UnresolvedType forAnnotationType ) { } public abstract Var getWithinCodeAnnotationVar ( UnresolvedType forAnnotationType ) { } public abstract Var getThisAnnotationVar ( UnresolvedType forAnnotationType ) { } public abstract Var getTargetAnnotationVar ( UnresolvedType forAnnotationType ) { } public abstract Var getArgAnnotationVar ( int i , UnresolvedType forAnnotationType ) { } public abstract Member getEnclosingCodeSignature ( ) { } public Shadow . Kind getKind ( ) { } public Member getSignature ( ) { } public ResolvedMember getResolvedSignature ( ) { } public UnresolvedType getReturnType ( ) { if ( ( kind ) == ( Shadow . ConstructorCall ) ) return getSignature ( ) . getDeclaringType ( ) ; else if ( ( kind ) == ( Shadow . FieldSet ) ) return ResolvedType . VOID ; <START_BUG> return getSignature ( ) . getReturnType ( ) ; <END_BUG> } public static final Shadow . Kind MethodCall = new Shadow . Kind ( JoinPoint . METHOD_CALL , 1 , true ) ; public static final Shadow . Kind ConstructorCall = new Shadow . Kind ( JoinPoint . CONSTRUCTOR_CALL , 2 , true ) ; public static final Shadow . Kind MethodExecution = new Shadow . Kind ( JoinPoint . METHOD_EXECUTION , 3 , false ) ; public static final Shadow . Kind ConstructorExecution = new Shadow . Kind ( JoinPoint . CONSTRUCTOR_EXECUTION , 4 , false ) ; public static final Shadow . Kind FieldGet = new Shadow . Kind ( JoinPoint . FIELD_GET , 5 , true ) ; public static final Shadow . Kind FieldSet = new Shadow . Kind ( JoinPoint . FIELD_SET , 6 , true ) ; public static final Shadow . Kind StaticInitialization = new Shadow . Kind ( JoinPoint . STATICINITIALIZATION , 7 , false ) ; public static final Shadow . Kind PreInitialization = new Shadow . Kind ( JoinPoint . PREINTIALIZATION , 8 , false ) ; public static final Shadow . Kind AdviceExecution = new Shadow . Kind ( JoinPoint . ADVICE_EXECUTION , 9 , false ) ; public static final Shadow . Kind Initialization = new Shadow . Kind ( JoinPoint . INITIALIZATION , 10 , false ) ; public static final Shadow . Kind ExceptionHandler = new Shadow . Kind ( JoinPoint . EXCEPTION_HANDLER , 11 , true ) ; public static final int MAX_SHADOW_KIND = 11 ; public static final Shadow . Kind [ ] SHADOW_KINDS = new Shadow . Kind [ ] { Shadow . MethodCall , Shadow . ConstructorCall , Shadow . MethodExecution , Shadow . ConstructorExecution , Shadow . FieldGet , Shadow . FieldSet , Shadow . StaticInitialization , Shadow . PreInitialization , Shadow . AdviceExecution , Shadow . Initialization , Shadow . ExceptionHandler } ; public static final Set ALL_SHADOW_KINDS = new HashSet ( ) ; public static final class Kind extends TypeSafeEnum { private boolean argsOnStack ; public Kind ( String name , int key , boolean argsOnStack ) { } public String toLegalJavaIdentifier ( ) { } public boolean argsOnStack ( ) { } public boolean allowsExtraction ( ) { } public boolean hasHighPriorityExceptions ( ) { } public boolean isEnclosingKind ( ) { } public boolean isTargetSameAsThis ( ) { } public boolean neverHasTarget ( ) { } public boolean neverHasThis ( ) { } public String getSimpleName ( ) { } public static Shadow . Kind read ( DataInputStream s ) throws IOException { } } protected boolean checkMunger ( ShadowMunger munger ) { } protected boolean checkCanThrow ( ShadowMunger munger , ResolvedType resolvedTypeX ) { } private boolean isDeclaredException ( ResolvedType resolvedTypeX , Member member ) { } public void addMunger ( ShadowMunger munger ) { } public final void implement ( ) { } private void sortMungers ( ) { } protected void prepareForMungers ( ) { } private String beautifyLocation ( ISourceLocation isl ) { } private void reportWeavingMessage ( ShadowMunger munger ) { } public IRelationship . Kind determineRelKind ( ShadowMunger munger ) { } private void implementMungers ( ) { } public String makeReflectiveFactoryString ( ) { } public abstract ISourceLocation getSourceLocation ( ) { } public String toString ( ) { } public String toResolvedString ( World world ) { } }

Fix:
return getResolvedSignature ( ) . getGenericReturnType ( ) ;