leftExpression= addRightOperandInInfixExpression(operator, ast, rewrite, leftExpression, infixExpression.getLeftOperand());
leftExpression= combineOperands(rewrite, leftExpression, infixExpression.getLeftOperand(), true, operator);
	private static boolean getExchangeOperandsProposals(IInvocationContext context, ASTNode node,			Collection resultingCollections) {		// check that user invokes quick assist on infix expression		if (!(node instanceof InfixExpression)) {			return false;		}		InfixExpression infixExpression = (InfixExpression) node;		Operator operator = infixExpression.getOperator();		if ((operator != InfixExpression.Operator.CONDITIONAL_AND) && (operator != InfixExpression.Operator.AND)				&& (operator != InfixExpression.Operator.CONDITIONAL_OR) && (operator != InfixExpression.Operator.OR)				&& (operator != InfixExpression.Operator.EQUALS) && (operator != InfixExpression.Operator.PLUS)				&& (operator != InfixExpression.Operator.TIMES) && (operator != InfixExpression.Operator.XOR)) {			return false;		}		// ok, we could produce quick assist		if (resultingCollections == null) {			return true;		}		AST ast = infixExpression.getAST();		ASTRewrite rewrite = ASTRewrite.create(ast);		// prepare left and right expressions		Expression leftExpression = null;		Expression rightExpression = null;		InfixExpression currentExpression = infixExpression;		leftExpression= addRightOperandInInfixExpression(operator, ast, rewrite, leftExpression, infixExpression.getLeftOperand());		if (infixExpression.getRightOperand().getStartPosition() <= context.getSelectionOffset()) {			leftExpression= addRightOperandInInfixExpression(operator, ast, rewrite, leftExpression, infixExpression.getRightOperand());		} else {			rightExpression= addRightOperandInInfixExpression(operator, ast, rewrite, rightExpression, infixExpression.getRightOperand());		}		for (Iterator I= currentExpression.extendedOperands().iterator(); I.hasNext();) {			Expression extendedOperand= (Expression) I.next();			if (extendedOperand.getStartPosition() <= context.getSelectionOffset()) {				leftExpression= addRightOperandInInfixExpression(operator, ast, rewrite, leftExpression, extendedOperand);			} else {				rightExpression= addRightOperandInInfixExpression(operator, ast, rewrite, rightExpression, extendedOperand);			}		}		// create new infix expression		InfixExpression newInfix = ast.newInfixExpression();		newInfix.setOperator(operator);		newInfix.setLeftOperand(rightExpression);		newInfix.setRightOperand(leftExpression);		rewrite.replace(currentExpression, newInfix, null);		// add correction proposal		String label = CorrectionMessages.AdvancedQuickAssistProcessor_exchangeOperands_description;		Image image = JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);		ASTRewriteCorrectionProposal proposal = new ASTRewriteCorrectionProposal(label, context.getCompilationUnit(), rewrite, 1, image);		resultingCollections.add(proposal);		return true;	}