class DistributionMixture implements Distribution {

    public Vector likelihood(Vector x) {
        return VectorUtils.of(distributions.stream().mapToDouble(f -> f.prob(x)).toArray())
            .times(componentProbs);
    }

    public  DistributionMixture(Vector componentProbs, List<C> distributions);

}