@Override public void visit(VariableExpr expr) { int index = expr.getIndex(); resultExpr = expr; if (readFrequencies[index] != 1 || preservedVars[index]) { return; } if (resultSequence.isEmpty()) { return; } Statement last = resultSequence.get(resultSequence.size() - 1); if (!(last instanceof AssignmentStatement)) { return; } AssignmentStatement assignment = (AssignmentStatement) last; if (assignment.isAsync()) { return; } if (!(assignment.getLeftValue() instanceof VariableExpr)) { return; } VariableExpr var = (VariableExpr) assignment.getLeftValue(); if (var.getLocation() != null && assignment.getLocation() != null && !assignment.getLocation().equals(var.getLocation())) { return; } if (var.getIndex() == index) { resultSequence.remove(resultSequence.size() - 1); assignment.getRightValue().setLocation(assignment.getLocation()); assignment.getRightValue().acceptVisitor(this); } }