private AASetSequence UnifyWithAfterOrNull(int coreLength, AASetSequence disjunctRightFull, AASetSequence disjunctUnificationAfter) { AASetSequence sb; if (disjunctRightFull.Count >= disjunctUnificationAfter.Count) { sb = UnifyWithAfterOrNullLongerShorter(disjunctRightFull, disjunctUnificationAfter); } else { sb = UnifyWithAfterOrNullLongerShorter(disjunctUnificationAfter, disjunctRightFull); } if (sb == null) { return(null); } //make everything after the core region, lower case to shows that it is a flanking region for (int i = (int)coreLength + 1; i < sb.Count; ++i) { sb[i] = AASetSequence.ToOptional(sb[i]); } return(sb); }