/** * Determines if a copied token is equal to the next 3 tokens in the iterator. */ private static boolean isCopiedTokenEqualToNextThreeCopiedTokens(TagNode copiedStartToken, ListIterator<BaseToken> nodeIterator) { int steps = 0; int matches = 0; while (nodeIterator.hasNext() && steps < 3) { BaseToken nextToken = nodeIterator.next(); steps++; if (nextToken instanceof TagNode && ((TagNode) nextToken).isCopy() && areCopiedTokensEqual((TagNode) nextToken, copiedStartToken)) { matches++; } else { break; } } for (int i = 0; i < steps; i++) { nodeIterator.previous(); } return matches == 3; }