if (problemPos.getId() == IProblem.BodyForAbstractMethod) {  }
	public static void addAbstractMethodProposals(ProblemPosition problemPos, ArrayList proposals) throws CoreException {		ICompilationUnit cu= problemPos.getCompilationUnit();		CompilationUnit astRoot= AST.parseCompilationUnit(cu, true);		ASTNode selectedNode= ASTResolving.findCoveringNode(astRoot, problemPos.getOffset(), problemPos.getLength());		if (selectedNode == null) {			return;		}		MethodDeclaration decl;		if (selectedNode instanceof SimpleName) {			decl= (MethodDeclaration) selectedNode.getParent();		} else if (selectedNode instanceof MethodDeclaration) {			decl= (MethodDeclaration) selectedNode;		} else {			return;		}			ASTNode parentType= ASTResolving.findParentType(decl);		boolean parentIsAbstract= (parentType instanceof TypeDeclaration) && Modifier.isAbstract(((TypeDeclaration) parentType).getModifiers());				int endPos= decl.getStartPosition() + decl.getLength() - 1;		IBuffer buffer= cu.getBuffer();		boolean hasNoBody= buffer.getLength() > endPos && buffer.getChar(endPos) == ';';				if (problemPos.getId() == IProblem.AbstractMethodInAbstractClass || parentIsAbstract) {			ASTRewrite rewrite= new ASTRewrite(decl.getParent());						AST ast= astRoot.getAST();			MethodDeclaration modifiedNode= ast.newMethodDeclaration();			modifiedNode.setConstructor(decl.isConstructor());			modifiedNode.setExtraDimensions(decl.getExtraDimensions());			modifiedNode.setModifiers(decl.getModifiers() & ~Modifier.ABSTRACT);			rewrite.markAsModified(decl, modifiedNode);			if (hasNoBody) {				Block newBody= ast.newBlock();				rewrite.markAsInserted(newBody);				decl.setBody(newBody);				Expression expr= ASTResolving.getInitExpression(decl.getReturnType());				if (expr != null) {					ReturnStatement returnStatement= ast.newReturnStatement();					returnStatement.setExpression(expr);					newBody.statements().add(returnStatement);				}			}				String label= CorrectionMessages.getString("LocalCorrectionsSubProcessor.removeabstract.description");			Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);			ASTRewriteCorrectionProposal proposal= new ASTRewriteCorrectionProposal(label, cu, rewrite, 1, image);			proposal.calculateEditsAndClearRewrites();			proposals.add(proposal);		}				if (problemPos.getId() == IProblem.BodyForAbstractMethod) {			/* disabled: bug 24623 			ASTRewrite rewrite= new ASTRewrite(decl.getParent());			rewrite.markAsRemoved(decl.getBody());						String label= CorrectionMessages.getString("LocalCorrectionsSubProcessor.removebody.description");			Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);			ASTRewriteCorrectionProposal proposal2= new ASTRewriteCorrectionProposal(label, cu, rewrite, 0, image);			proposal2.calculateEditsAndClearRewrites();			proposals.add(proposal2);			*/		}				if (problemPos.getId() == IProblem.AbstractMethodInAbstractClass && (parentType instanceof TypeDeclaration)) {			TypeDeclaration typeDeclaration= (TypeDeclaration) parentType;						ASTRewrite rewrite= new ASTRewrite(decl.getParent());						AST ast= astRoot.getAST();			TypeDeclaration modifiedNode= ast.newTypeDeclaration();			modifiedNode.setInterface(typeDeclaration.isInterface());			modifiedNode.setModifiers(typeDeclaration.getModifiers() | Modifier.ABSTRACT);			rewrite.markAsModified(typeDeclaration, modifiedNode);				String label= CorrectionMessages.getFormattedString("LocalCorrectionsSubProcessor.addabstract.description", typeDeclaration.getName().getIdentifier());			Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);			ASTRewriteCorrectionProposal proposal= new ASTRewriteCorrectionProposal(label, cu, rewrite, 3, image);			proposal.calculateEditsAndClearRewrites();			proposals.add(proposal);		}					}