protected void doAccept(DPattern... p) {
    myVisited.clear();
    //noinspection ForLoopReplaceableByForEach
    for (int i = 0; i < p.length; i++) {
      p[i].accept(this);
    }
    myVisited.clear();
  }
protected void doAccept(DPattern... p)