String label= CorrectionMessages.LocalCorrectionsSubProcessor_LocalCorrectionsSubProcessor_setparenteses_bitop_description;
String label= CorrectionMessages.LocalCorrectionsSubProcessor_setparenteses_bitop_description;
	public static void getInvalidOperatorProposals(IInvocationContext context, IProblemLocation problem, Collection proposals) {		CompilationUnit root= context.getASTRoot();		AST ast= root.getAST();		ASTNode selectedNode= problem.getCoveringNode(root);		while (selectedNode instanceof ParenthesizedExpression) {			selectedNode= ((ParenthesizedExpression) selectedNode).getExpression();		}		if (selectedNode instanceof PrefixExpression) {			// !x instanceof X -> !(x instanceof X)			PrefixExpression expression= (PrefixExpression) selectedNode;			if (expression.getOperator() == PrefixExpression.Operator.NOT) {				ASTNode parent= expression.getParent();				String label= null;				switch (parent.getNodeType()) {					case ASTNode.INSTANCEOF_EXPRESSION:						label= CorrectionMessages.LocalCorrectionsSubProcessor_setparenteses_instanceof_description;						break;					case ASTNode.INFIX_EXPRESSION:						label= CorrectionMessages.LocalCorrectionsSubProcessor_setparenteses_description;						break;				}				if (label != null) {					ASTRewrite rewrite= ASTRewrite.create(ast);					rewrite.replace(selectedNode, rewrite.createMoveTarget(expression.getOperand()), null);					ParenthesizedExpression newParentExpr= ast.newParenthesizedExpression();					newParentExpr.setExpression((Expression) rewrite.createMoveTarget(parent));					PrefixExpression newPrefixExpr= ast.newPrefixExpression();					newPrefixExpr.setOperand(newParentExpr);					newPrefixExpr.setOperator(PrefixExpression.Operator.NOT);					rewrite.replace(parent, newPrefixExpr, null);					Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);					ASTRewriteCorrectionProposal proposal= new ASTRewriteCorrectionProposal(label, context.getCompilationUnit(), rewrite, 5, image); 					proposals.add(proposal);				}			}		} else if (selectedNode instanceof InfixExpression && isBitOperation((((InfixExpression) selectedNode).getOperator()))) {			// a & b == c -> (a & b) == c			CompareInBitWiseOpFinder visitor= new CompareInBitWiseOpFinder();			selectedNode.accept(visitor);			if (visitor.compareExpression != null) { // compare operation inside bit operations: set parents				ASTNode expr= selectedNode;				ASTNode parent= expr.getParent(); // include all parents				while (parent instanceof InfixExpression && isBitOperation(((InfixExpression) parent).getOperator())) {					expr= parent;					parent= expr.getParent();				}				String label= CorrectionMessages.LocalCorrectionsSubProcessor_LocalCorrectionsSubProcessor_setparenteses_bitop_description;				Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CAST);				CUCorrectionProposal proposal= new CUCorrectionProposal(label, context.getCompilationUnit(), 5, image);				proposals.add(proposal);				TextEdit edit= proposal.getTextChange().getEdit();				ASTNode left= visitor.compareExpression.getLeftOperand();				if (expr.getStartPosition() < left.getStartPosition()) {					edit.addChild(new InsertEdit(expr.getStartPosition(), String.valueOf('(')));					edit.addChild(new InsertEdit(ASTNodes.getExclusiveEnd(left), String.valueOf(')')));				}				ASTNode rigth= visitor.compareExpression.getRightOperand();				int selEnd= ASTNodes.getExclusiveEnd(expr);				if (selEnd > ASTNodes.getExclusiveEnd(rigth)) {					edit.addChild(new InsertEdit(rigth.getStartPosition(), String.valueOf('(')));					edit.addChild(new InsertEdit(selEnd, String.valueOf(')')));				}			}		}	}