@Nullable
  public TreeNode getNextSelectedByKey() {
    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);
  }
@Nullable
  public TreeNode getNextSelectedByKey()