@NotNull
  private Couple<Integer> computeHash(MultiChildDescriptor childDescriptor,
                                      PsiFragment parentFragment,
                                      NodeSpecificHasher nodeSpecificHasher) {
    final PsiElement[] elements = childDescriptor.getElements();

    return switch (childDescriptor.getType()) {
      case OPTIONALLY_IN_PATTERN, DEFAULT -> hashChildResults(computeHashes(elements, parentFragment, nodeSpecificHasher), 31);
      case IN_ANY_ORDER -> hashChildResults(computeHashes(elements, parentFragment, nodeSpecificHasher), 1);
      default -> Couple.of(0, 0);
    };
  }
@NotNull
  private Couple<Integer> computeHash(MultiChildDescriptor childDescriptor,
                                      PsiFragment parentFragment,
                                      NodeSpecificHasher nodeSpecificHasher)