void (RegExpPattern pattern) { if (mySupport != RegExpLanguageHost.Lookbehind.FIXED_LENGTH_ALTERNATION) { super.visitRegExpPattern(pattern); return; } final int length = myLength; int branchLength = -1; final RegExpBranch[] branches = pattern.getBranches(); for (RegExpBranch branch : branches) { myLength = 0; super.visitRegExpBranch(branch); if (branchLength == -1) { branchLength = myLength; } else if (branchLength != myLength) { stopAndReportError(pattern, RegExpBundle.message("error.alternation.alternatives.needs.to.have.the.same.length.inside.lookbehind")); return; } } myLength = length + branchLength; }