void (List<VarFieldPair> first, List<VarFieldPair> second, boolean both) { int i = 1; while (first.size() > i && second.size() > i) { VarFieldPair fObj = first.get(first.size() - i); VarFieldPair sObj = second.get(second.size() - i); if (!isEqual(both, fObj, sObj)) { first.set(first.size() - i, null); if (both) { second.set(second.size() - i, null); } } else if (fObj != null) { if (fObj.varPair.var == -1) { fObj.varPair = sObj.varPair; } else { sObj.varPair = fObj.varPair; } } i++; } for (int j = 1; j <= first.size() - i; j++) { first.set(j, null); } if (both) { for (int j = 1; j <= second.size() - i; j++) { second.set(j, null); } } // first if (first.isEmpty()) { if (!second.isEmpty() && both) { second.set(0, null); } } else if (second.isEmpty()) { first.set(0, null); } else { VarFieldPair fObj = first.get(0); VarFieldPair sObj = second.get(0); if (!isEqual(both, fObj, sObj)) { first.set(0, null); if (both) { second.set(0, null); } } else if (fObj != null) { if (fObj.varPair.var == -1) { fObj.varPair = sObj.varPair; } else { sObj.varPair = fObj.varPair; } } } }