code: public Object childrenAccept(final XParserVisitor visitor, final org.w3c.dom.Node data) {
          org.w3c.dom.Node result = data;
          if (children != null) {
              for (int i = 0; i < children.length; ++i) {
                  Object newResult = (children[i].jjtAccept(visitor, result));
                  if (Boolean.FALSE.equals(newResult)) { // Boolean end early exit
                      return Boolean.FALSE;
                  }
                  if (Boolean.TRUE.equals(newResult)) { // No early exit yet
                      if ((i + 1) == children.length) {
                          return Boolean.TRUE;
                      }
                      continue;
                  }
                  if (newResult instanceof List) {
                      newResult = ((List<?>) newResult).isEmpty() ? null : ((List<?>) newResult).get(0);
                  }
                  if (newResult instanceof Number) {
                      return newResult;
                  }
                  result = (org.w3c.dom.Node) newResult; // proceed step expression
                  if (result==null) {
                      break; // nothing can be found any more
                  }
                      
              }
          }
          return DOMHelper.asList(result);
      }
docs: Accept the visitor. *
  
  @param visitor
  @param data
  @return evaluation result: Boolean, List, Number or Node