public IList<ClusterPrototype> MergeClustersIfRequired(IList<ClusterPrototype> clusters)
{
var clustersToIterateOver = new List<ClusterPrototype>(clusters);
foreach (var cluster in clustersToIterateOver)
{
foreach (var otherCluster in new List<ClusterPrototype>(clusters))
{
if (cluster != otherCluster && this.IsMergeRequired(cluster, otherCluster))
{
clusters.Remove(cluster);
clusters.Remove(otherCluster);
clusters.Add(ClusterPrototype.Merge(cluster, otherCluster));
}
}
}
return clusters;
}