private boolean dispatchTargetMatch(@NotNull MatchResult result) {
    boolean dispatched = false;

    for (MatchResult r : result.getChildren()) {
      if ((r.isScopeMatch() && !r.isTarget()) || r.isMultipleMatch()) {
        dispatched |= dispatchTargetMatch(r);
      }
      else if (r.isTarget()) {
        getSink().newMatch(r);
        dispatched = true;
      }
    }
    return dispatched;
  }
private boolean dispatchTargetMatch(@NotNull MatchResult result)