@Override
    public @NotNull Action visit(@NotNull TreePath path) {
      boolean foundPartialMatch = false;
      for (Iterator<PathMatchState> iterator = matchStates.iterator(); iterator.hasNext(); ) {
        PathMatchState state = iterator.next();
        switch (state.match(path)) {
          case FULL -> {
            pathsFound.add(path);
            iterator.remove();
          }
          case PARTIAL -> {
            foundPartialMatch = true;
          }
        }
      }
      if (matchStates.isEmpty()) {
        return Action.INTERRUPT;
      }
      else if (foundPartialMatch) {
        return Action.CONTINUE;
      }
      else {
        return Action.SKIP_CHILDREN;
      }
    }
@Override
    public @NotNull Action visit(@NotNull TreePath path)