/** * Extend the block if it can be done and keep consistent phasing. Update the block phasing * pattern if successful. * * @param family containing a set of calls. * @return true iff the block was successfully extended. */ boolean extend(final FamilyGt family) { final int length = family.length(); assert length == mPatterns.length(); assert family.posn() > mEnd; assert mSeq.equals(family.seq()); final PatternArray pattern = family.pattern(); for (int f = 0; f < Pattern.NUMBER_FLIPS; f++) { final PatternArray pat = mPatterns.flipIntersect(pattern, f); if (pat != null) { mPatterns = pat; mEnd = family.posn(); mCount++; return true; } } return false; }