Bug 96926 [quick fix] Change method return type quick fix gives invalid proposal for wildcard types
Against I20050527-0010: Code: void a() { ArrayList<? extends Number> b = null; return b.get(0); } Ask for a quick fix on the compile error. Three things happen: 1) BAD: The quick fix is entitled "Change method return type to '? extends Number'". 2) GOOD: The correct return type, Number, is shown originally. 3) BAD: However, the top completion proposal, and the one chosen if the user simply hits return, is "? extends Number", which creates a compile error.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/ModifierCorrectionSubProcessor.java
newAnnot.setTypeName(ast.newSimpleName("SuppressWarnings")); 
			newAnnot.setValue(newStringLiteral);
			
			listRewrite.insertFirst(newAnnot, null);
		} else if (existing instanceof SingleMemberAnnotation) {
			SingleMemberAnnotation annotation= (SingleMemberAnnotation) existing;
			Expression value= annotation.getValue();
			if (!addSuppressArgument(rewrite, value, newStringLiteral)) {
				rewrite.set(existing, SingleMemberAnnotation.VALUE_PROPERTY, newStringLiteral, null);
			}
		} else if (existing instanceof NormalAnnotation) {
			NormalAnnotation annotation= (NormalAnnotation) existing;
			Expression value= findValue(annotation.values());
			if (!addSuppressArgument(rewrite, value, newStringLiteral)) {
				ListRewrite listRewrite= rewrite.getListRewrite(annotation, NormalAnnotation.VALUES_PROPERTY);
				MemberValuePair pair= ast.newMemberValuePair();
				pair.setName(ast.newSimpleName("value")); 
				pair.setValue(newStringLiteral);
				listRewrite.insertFirst(pair, null);
			}	
		}
		String label= Messages.format(CorrectionMessages.ModifierCorrectionSubProcessor_suppress_warnings_label, new String[] { warningToken, name });
		Image image= JavaPluginImages.get(JavaPluginImages.IMG_OBJS_ANNOTATION);
		ASTRewriteCorrectionProposal proposal= new ASTRewriteCorrectionProposal(label, cu, rewrite, relevance, image);
		proposal.setCommandId(ADD_SUPPRESSWARNINGS_ID);
		return proposal;
	}
	
	private static boolean addSuppressArgument(ASTRewrite rewrite, Expression value, StringLiteral newStringLiteral) {
		if (value instanceof ArrayInitializer) {