/** * One var can be pointed by multiples accesses. This method leaves only one access per variable * in the list */ private List<CtVariableAccess> cleanRepeatedAccesses(List<CtVariableAccess> allAccess) { // Have only one access per variable HashSet<String> varSignatures = new HashSet<>(); List<CtVariableAccess> access = new ArrayList<>(); for (CtVariableAccess a : allAccess) { if (isFieldOfPrimitiveArray(a)) continue; String signature = ""; if (a instanceof CtFieldAccess && ((CtFieldAccess) a).getTarget() != null) signature = ((CtFieldAccess) a).getTarget().toString(); signature += a.getVariable().getSimpleName() + a.getVariable().getClass().getSimpleName(); if (!varSignatures.contains(signature)) { varSignatures.add(signature); access.add(a); } } varSignatures.clear(); return access; }