@Override
  public SelResult childrenAccept(SelParserVisitor visitor, Object data) {
    SelResult res = SelResult.NONE;
    if (children != null) {
      for (int i = 0; i < children.length; ++i) {
        res = (SelResult) children[i].jjtAccept(visitor, data);
        switch (res) {
          case BREAK:
            return SelResult.BREAK;
          case CONTINUE:
            return SelResult.CONTINUE;
          case RETURN:
            return SelResult.RETURN;
        }
      }
    }
    return res;
  }
@Test
  public void testVisitedAllDataNode() {
    root.jjtAddChild(dataNode, 2);
    root.jjtAddChild(dataNode, 1);
    root.jjtAddChild(dataNode, 0);
    SelResult res = root.childrenAccept(null, null);
    assertEquals(SelResult.DATA, res);
    assertArrayEquals(new int[] {0, 0, 0, 3, 0}, visited);
  }