docs: protected List<R> visitChildrenAllowingConcurrentModification(ParentNode<? extends N> node) {
      List<R> results = new ArrayList<>(node.numChildren());
      // use toArray to create a copy to avoid concurrent modification exception
      for (Node child : node.getChildren().toArray(EMPTY_NODE_ARRAY)) {
        // safe since the parent only contains subtypes of N.
        @SuppressWarnings("unchecked")
        N typedChild = (N) child;
        results.add(visit(typedChild));
      }
      return results;
    }