private static void test(MethodEntry current, List<MethodEntry> set) { Iterator<MethodEntry> it = current.myCalledMethods.iterator(); while (it.hasNext()) { MethodEntry callee = it.next(); if (set.contains(callee)) { callee.myCalledByMethods.remove(current); if (callee.myCalledByMethods.size() == 0) { callee.myRelatedMethod = false; } it.remove(); } else { set.add(callee); test(callee, set); } } }