Bug 23528 quick fix: adds bogus whitespaces on 'add throws declaration'
class A{ void a() throws Exception{ } void f(){ a(); } } qf the call to a() 'add throws declaration' you will get 'void f() throws Exception{' i have to go and fix it every time it used to work :(
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java
public static void addCastProposals(ProblemPosition problemPos, ArrayList proposals) throws CoreException {
		String[] args= problemPos.getArguments();
		if (args.length != 2) {
			return;
		}
			
		ICompilationUnit cu= problemPos.getCompilationUnit();
		String castDestType= args[1];
		CompilationUnit astRoot= AST.parseCompilationUnit(cu, false);
		ASTNode selectedNode= ASTResolving.findSelectedNode(astRoot, problemPos.getOffset(), problemPos.getLength());
		
		int pos= problemPos.getOffset();
		if (selectedNode != null && selectedNode.getParent() != null) {
			int parentNodeType= selectedNode.getParent().getNodeType();
			if (parentNodeType == ASTNode.ASSIGNMENT) {
				Assignment assign= (Assignment) selectedNode.getParent();
				if (selectedNode.equals(assign.getLeftHandSide())) {
					pos= assign.getRightHandSide().getStartPosition();
				}
			} else if (parentNodeType == ASTNode.VARIABLE_DECLARATION_FRAGMENT) {
				VariableDeclarationFragment frag= (VariableDeclarationFragment) selectedNode.getParent();
				if (selectedNode.equals(frag.getName())) {
					pos= frag.getInitializer().getStartPosition();
				}
			}
		}