class BernoulliVertex extends VertexImpl<BooleanTensor, BooleanVertex> implements BooleanVertex, ProbabilisticBoolean, SamplableWithManyScalars<BooleanTensor>, LogProbGraphSupplier {

    @Override
    public LogProbGraph logProbGraph() {
        BooleanPlaceholderVertex valuePlaceholder = new BooleanPlaceholderVertex(this.getShape());
        DoublePlaceholderVertex probTruePlaceholder = new DoublePlaceholderVertex(probTrue.getShape());

        return LogProbGraph.builder()
            .input(this, valuePlaceholder)
            .input(probTrue, probTruePlaceholder)
            .logProbOutput(Bernoulli.logProbGraph(valuePlaceholder, probTruePlaceholder))
            .build();
    }

    public  BernoulliVertex(@LoadShape long[] shape,
                           @LoadVertexParam(PROBTRUE_NAME) Vertex<DoubleTensor, ?> probTrue);
    @ExportVertexToPythonBindings public  BernoulliVertex(Vertex<DoubleTensor, ?> probTrue);
    public  BernoulliVertex(double probTrue);
    public  BernoulliVertex(long[] shape, double probTrue);

}