/// <summary>
        /// VMP message to 'probsTrue'
        /// </summary>
        /// <param name="sample">Constant value for 'sample'.</param>
        /// <returns>The outgoing VMP message to the 'probsTrue' argument</returns>
        /// <remarks><para>
        /// The outgoing message is the factor viewed as a function of 'probsTrue' conditioned on the given values.
        /// </para></remarks>
        public static SparseBetaList ProbsTrueAverageLogarithm(IList <bool> sample)
        {
            int count       = sample.Count;
            var trueCounts  = SparseVector.Constant(count, 1.0);
            var falseCounts = SparseVector.Constant(count, 2.0);

            bool[] sampleAsArray = (bool[])sample;
            for (int i = 0; i < sampleAsArray.Length; i++)
            {
                if (!sampleAsArray[i])
                {
                    continue;
                }
                trueCounts[i]  = 2;
                falseCounts[i] = 1;
            }
            return(new SparseBetaList(trueCounts, falseCounts));
        }