TreeNode () { if (myKey != null) { for (final TreeNode node : myChildren) { final IterationResultHolder checkResult = doChecks(node); if (IterationResultHolder.RESULT.equals(checkResult)) { return node; } else if (IterationResultHolder.SKIP.equals(checkResult)) { continue; } if (myKey.compareTo(node.toString()) <= 0) { return node; } } } return ((myChildren == null) || myChildren.isEmpty()) ? null : myChildren.get(myChildren.size() - 1); }