docs: protected List<Cluster<M>> splitCluster(Cluster<M> parentCluster, Database database, Relation<V> relation) {
      // Transform parent cluster into a clustering
      ArrayList<Cluster<M>> parentClusterList = new ArrayList<Cluster<M>>(1);
      parentClusterList.add(parentCluster);
      if(parentCluster.size() <= 1) {
        // Split is not possbile
        return parentClusterList;
      }
      Clustering<M> parentClustering = new Clustering<>(parentCluster.getName(), parentCluster.getName(), parentClusterList);
  
      ProxyDatabase proxyDB = new ProxyDatabase(parentCluster.getIDs(), database);
  
      splitInitializer.setInitialMeans(splitCentroid(parentCluster, relation));
      innerKMeans.setK(2);
      Clustering<M> childClustering = innerKMeans.run(proxyDB);
  
      double parentEvaluation = informationCriterion.quality(parentClustering, getDistanceFunction(), relation);
      double childrenEvaluation = informationCriterion.quality(childClustering, getDistanceFunction(), relation);
  
      if(LOG.isDebugging()) {
        LOG.debug("parentEvaluation: " + parentEvaluation);
        LOG.debug("childrenEvaluation: " + childrenEvaluation);
      }
  
      // Check if split is an improvement:
      return informationCriterion.isBetter(parentEvaluation, childrenEvaluation) ? parentClusterList : childClustering.getAllClusters();
    }