class CompositeMetric implements ClusterMetric {

    @Override
    public double mean() {
        return clusterMetrics.stream().map(metric -> metric.mean() * metric.count())
                             .reduce(Double::sum)
                             .orElse((double) 0)
                / count();
    }

    public  CompositeMetric(ClusterMetric ... clusterMetric);
    public  CompositeMetric(ClusterMetric clusterMetric, Iterable<ClusterMetric> clusterMetrics);
    public  CompositeMetric(Iterable<ClusterMetric> clusterMetrics);

}