class ModelComposition {

    public static Map<VertexLabel, Vertex> composeModel(BayesianNetwork bayesianNetwork,
                                                        Map<VertexLabel, Vertex> inputVertices,
                                                        List<VertexLabel> desiredOutputs) {
        Map<VertexLabel, Vertex> outputMap = extractOutputs(bayesianNetwork, desiredOutputs);
        increaseDepth(bayesianNetwork, outputMap);
        checkAndLinkInputs(bayesianNetwork, inputVertices);
        cleanOutputLabels(outputMap);

        return outputMap;
    }

    private  ModelComposition();

}