@Override
  public DataNodeVisitor.Result accept(String name, DataNodeVisitor visitor) throws BigDBException {

    Result result = visitor.visitEnterList(name, this);
    if (result == Result.TERMINATE) return result;

    if (result != Result.SKIP_SUBTREE) {
      for (DataNode childNode : this) {
        result = childNode.accept((String) null, visitor);
        if ((result == Result.TERMINATE) || (result == Result.SKIP_SIBLINGS)) break;
      }
      if (result == Result.TERMINATE) return result;
    }

    result = visitor.visitLeaveList(name, this);

    return result;
  }
 @Override
 public Result accept(IndexValue keyValue, DataNodeVisitor visitor) throws BigDBException {
   Result result = visitor.visitNull(keyValue, this);
   return result;
 }
 @Override
 public Result accept(String name, DataNodeVisitor visitor) throws BigDBException {
   Result result = visitor.visitNull(name, this);
   return result;
 }
 @Override
 public DataNodeVisitor.Result accept(String name, DataNodeVisitor visitor) throws BigDBException {
   DataNodeVisitor.Result result = visitor.visitLeaf(name, (LeafDataNode) this);
   return result;
 }