docs: @Override
    public Assignments<E> split(AbstractMTree<?, N, E, ?> tree, N node) {
      final int n = node.getNumEntries();
      double[][] distanceMatrix = computeDistanceMatrix(tree, node);
  
      double miSumCR = Double.POSITIVE_INFINITY;
      boolean leaf = node.isLeaf();
      Assignments<E> bestAssignment = null;
      for(int i = 0; i < n; i++) {
        for(int j = i + 1; j < n; j++) {
          Assignments<E> currentAssignments = distributor.distribute(node, i, distanceMatrix[i], j, distanceMatrix[j]);
  
          double maxCR = Math.max(currentAssignments.computeFirstCover(leaf), currentAssignments.computeSecondCover(leaf));
          if(maxCR < miSumCR) {
            miSumCR = maxCR;
            bestAssignment = currentAssignments;
          }
        }
      }
      return bestAssignment;
    }