class BinomialVertex extends VertexImpl<IntegerTensor, IntegerVertex> implements IntegerVertex, ProbabilisticInteger, SamplableWithManyScalars<IntegerTensor>, LogProbGraphSupplier {

    @Override
    public LogProbGraph logProbGraph() {
        IntegerPlaceholderVertex kPlaceholder = new IntegerPlaceholderVertex(this.getShape());
        DoublePlaceholderVertex pPlaceholder = new DoublePlaceholderVertex(p.getShape());
        IntegerPlaceholderVertex nPlaceholder = new IntegerPlaceholderVertex(n.getShape());

        return LogProbGraph.builder()
            .input(this, kPlaceholder)
            .input(p, pPlaceholder)
            .input(n, nPlaceholder)
            .logProbOutput(Binomial.logProbOutput(kPlaceholder, pPlaceholder, nPlaceholder))
            .build();
    }

    public  BinomialVertex(@LoadShape long[] tensorShape,
                          @LoadVertexParam(P_NAME) Vertex<DoubleTensor, ?> p,
                          @LoadVertexParam(N_NAME) Vertex<IntegerTensor, ?> n);
    public  BinomialVertex(long[] tensorShape, double p, Vertex<IntegerTensor, ?> n);
    public  BinomialVertex(long[] tensorShape, Vertex<DoubleTensor, ?> p, int n);
    public  BinomialVertex(long[] tensorShape, double p, int n);
    @ExportVertexToPythonBindings public  BinomialVertex(Vertex<DoubleTensor, ?> p, Vertex<IntegerTensor, ?> n);
    public  BinomialVertex(double p, Vertex<IntegerTensor, ?> n);
    public  BinomialVertex(Vertex<DoubleTensor, ?> p, int n);
    public  BinomialVertex(double p, int n);

}