Source:
<code>public boolean visit(Assignment node) { Expression leftHandSide= node.getLeftHandSide(); if (!considerBinding(resolveBinding(leftHandSide), leftHandSide)) return true; checkParent(node); Expression rightHandSide= node.getRightHandSide(); if (!fIsFieldFinal) { List<Expression> arguments= new ArrayList<>(); AST ast= node.getAST(); if (!fSetter.isEmpty()) { MethodInvocation invocation= ast.newMethodInvocation(); invocation.setName(ast.newSimpleName(fSetter)); fReferencingSetter= true; Expression <START> receiver= getReceiver(leftHandSide); <END> if (receiver != null) { invocation.setExpression((Expression) fRewriter.createCopyTarget(receiver)); } arguments= invocation.arguments(); fRewriter.replace(node, invocation, createGroupDescription(WRITE_ACCESS)); } if (node.getOperator() == Assignment.Operator.ASSIGN) { arguments.add((Expression) fRewriter.createCopyTarget(rightHandSide)); } else if (!fGetter.isEmpty()) { InfixExpression exp= ast.newInfixExpression(); exp.setOperator(ASTNodes.convertToInfixOperator(node.getOperator())); MethodInvocation getter= ast.newMethodInvocation(); getter.setName(ast.newSimpleName(fGetter)); fReferencingGetter= true; Expression receiver= getReceiver(leftHandSide); if (receiver != null) { getter.setExpression((Expression) fRewriter.createCopyTarget(receiver)); } exp.setLeftOperand(getter); Expression rhs= (Expression) fRewriter.createCopyTarget(rightHandSide); if (NecessaryParenthesesChecker.needsParenthesesForRightOperand(rightHandSide, exp, leftHandSide.resolveTypeBinding())) { ParenthesizedExpression p= ast.newParenthesizedExpression(); p.setExpression(rhs); rhs= p; } exp.setRightOperand(rhs); arguments.add(exp); } } rightHandSide.accept(this); return false; }</code><technical_language>move receiver in parts of 'if' ? 'Expression receiver= getReceiver(leftHandSide);' written twice</technical_language>

Target:
public boolean visit(Assignment node) { Expression leftHandSide= node.getLeftHandSide(); if (!considerBinding(resolveBinding(leftHandSide), leftHandSide)) return true; checkParent(node); Expression rightHandSide= node.getRightHandSide(); if (!fIsFieldFinal) { List<Expression> arguments= new ArrayList<>(); AST ast= node.getAST(); Expression receiver= getReceiver(leftHandSide); if (!fSetter.isEmpty()) { MethodInvocation invocation= ast.newMethodInvocation(); invocation.setName(ast.newSimpleName(fSetter)); fReferencingSetter= true; if (receiver != null) { invocation.setExpression((Expression) fRewriter.createCopyTarget(receiver)); } arguments= invocation.arguments(); fRewriter.replace(node, invocation, createGroupDescription(WRITE_ACCESS)); } if (node.getOperator() == Assignment.Operator.ASSIGN) { arguments.add((Expression) fRewriter.createCopyTarget(rightHandSide)); } else if (!fGetter.isEmpty()) { InfixExpression exp= ast.newInfixExpression(); exp.setOperator(ASTNodes.convertToInfixOperator(node.getOperator())); MethodInvocation getter= ast.newMethodInvocation(); getter.setName(ast.newSimpleName(fGetter)); fReferencingGetter= true; if (receiver != null) { getter.setExpression((Expression) fRewriter.createCopyTarget(receiver)); } exp.setLeftOperand(getter); Expression rhs= (Expression) fRewriter.createCopyTarget(rightHandSide); if (NecessaryParenthesesChecker.needsParenthesesForRightOperand(rightHandSide, exp, leftHandSide.resolveTypeBinding())) { ParenthesizedExpression p= ast.newParenthesizedExpression(); p.setExpression(rhs); rhs= p; } exp.setRightOperand(rhs); arguments.add(exp); } } rightHandSide.accept(this); return false; }