code: package gr.uom.java.ast.decomposition.matching;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import gr.uom.java.ast.decomposition.AbstractExpression;
  import gr.uom.java.ast.decomposition.cfg.AbstractVariable;
  
  public class FieldAssignmentReplacedWithSetterInvocationDifference extends ASTNodeDifference {
  	
  	private AbstractExpression invoker1;
  	private AbstractExpression invoker2;
  	private AbstractExpression argument1;
  	private AbstractExpression argument2;
  	private AbstractVariable field1;
  	private AbstractVariable field2;
  	private String setterMethodName;
  	private List<ASTNodeDifference> invokerDifferences;
  	private List<ASTNodeDifference> argumentDifferences;
  	
  	public FieldAssignmentReplacedWithSetterInvocationDifference(AbstractExpression e1, AbstractExpression e2,
  			String setterMethodName) {
  		super(e1, e2);
  		this.setterMethodName = setterMethodName;
  		this.invokerDifferences = new ArrayList<ASTNodeDifference>();
  		this.argumentDifferences = new ArrayList<ASTNodeDifference>();
  	}
  
  	public String getSetterMethodName() {
  		return setterMethodName;
  	}
  
  	public List<ASTNodeDifference> getInvokerDifferences() {
  		return invokerDifferences;
  	}
  	public void addInvokerDifference(ASTNodeDifference invokerDifference) {
  		this.invokerDifferences.add(invokerDifference);
  	}
  	public List<ASTNodeDifference> getArgumentDifferences() {
  		return argumentDifferences;
  	}
  	public void addArgumentDifference(ASTNodeDifference argumentDifference) {
  		this.argumentDifferences.add(argumentDifference);
  	}
  	public AbstractExpression getInvoker1() {
  		return invoker1;
  	}
  	public void setInvoker1(AbstractExpression invoker1) {
  		this.invoker1 = invoker1;
  	}
  	public AbstractExpression getInvoker2() {
  		return invoker2;
  	}
  	public void setInvoker2(AbstractExpression invoker2) {
  		this.invoker2 = invoker2;
  	}
  	public AbstractExpression getArgument1() {
  		return argument1;
  	}
  	public void setArgument1(AbstractExpression argument1) {
  		this.argument1 = argument1;
  	}
  	public AbstractExpression getArgument2() {
  		return argument2;
  	}
  	public void setArgument2(AbstractExpression argument2) {
  		this.argument2 = argument2;
  	}
  	public AbstractVariable getField1() {
  		return field1;
  	}
  	public void setField1(AbstractVariable field1) {
  		this.field1 = field1;
  	}
  	public AbstractVariable getField2() {
  		return field2;
  	}
  	public void setField2(AbstractVariable field2) {
  		this.field2 = field2;
  	}
  }
  