static void carryFlags(RevCommit c, final int carry) { for (; ; ) { final RevCommit[] pList = c.parents; if (pList == null) return; final int n = pList.length; if (n == 0) return; for (int i = 1; i < n; i++) { final RevCommit p = pList[i]; if ((p.flags & carry) == carry) continue; p.flags |= carry; carryFlags(p, carry); } c = pList[0]; if ((c.flags & carry) == carry) return; c.flags |= carry; } }