proposal.addLinkedModeProposal(key, bindings[i]);
proposal.addLinkedPositionProposal(key, bindings[i]);
	public static void addMissingReturnTypeProposals(IInvocationContext context, IProblemLocation problem, Collection proposals) throws CoreException {		ICompilationUnit cu= context.getCompilationUnit();				CompilationUnit astRoot= context.getASTRoot();		ASTNode selectedNode= problem.getCoveringNode(astRoot);		if (selectedNode == null) {			return;		}		BodyDeclaration decl= ASTResolving.findParentBodyDeclaration(selectedNode);		if (decl instanceof MethodDeclaration) {			MethodDeclaration methodDeclaration= (MethodDeclaration) decl;						ReturnStatementCollector eval= new ReturnStatementCollector();			decl.accept(eval);			ITypeBinding typeBinding= eval.getTypeBinding(decl.getAST());			typeBinding= Bindings.normalizeTypeBinding(typeBinding);			AST ast= astRoot.getAST();			ASTRewrite rewrite= new ASTRewrite(ast);			ImportRewrite imports= new ImportRewrite(cu);			Type type;			String typeName;			if (typeBinding != null) {				typeName= imports.addImport(typeBinding);				type= ASTNodeFactory.newType(ast, typeName);			} else {				typeName= "void"; //$NON-NLS-1$						type= ast.newPrimitiveType(PrimitiveType.VOID);				}			rewrite.set(methodDeclaration, MethodDeclaration.RETURN_TYPE_PROPERTY, type, null);			rewrite.set(methodDeclaration, MethodDeclaration.CONSTRUCTOR_PROPERTY, Boolean.FALSE, null);			String label= CorrectionMessages.getFormattedString("ReturnTypeSubProcessor.missingreturntype.description", typeName); //$NON-NLS-1$					Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);			LinkedCorrectionProposal proposal= new LinkedCorrectionProposal(label, cu, rewrite, 6, image);			proposal.setImportRewrite(imports);						String key= "return_type"; //$NON-NLS-1$			proposal.markAsLinked(rewrite, type, true, key);			if (typeBinding != null) {				ITypeBinding[] bindings= ASTResolving.getRelaxingTypes(astRoot.getAST(), typeBinding);				for (int i= 0; i < bindings.length; i++) {					proposal.addLinkedModeProposal(key, bindings[i]);				}			}						proposals.add(proposal);						// change to constructor			ASTNode parentType= ASTResolving.findParentType(decl);			if (parentType instanceof TypeDeclaration) {				String constructorName= ((TypeDeclaration) parentType).getName().getIdentifier();				ASTNode nameNode= methodDeclaration.getName();				label= CorrectionMessages.getFormattedString("ReturnTypeSubProcessor.wrongconstructorname.description", constructorName); //$NON-NLS-1$						proposals.add(new ReplaceCorrectionProposal(label, cu, nameNode.getStartPosition(), nameNode.getLength(), constructorName, 5));			}					}	}