private Decision GenCond(ArraySlice <DecisionTest> S)
        {
            double probability;
            int    splitIndex = Split(S, out probability);

            int splitElement = S[splitIndex].Interval.First;
            RelationalBranchDecision result;
            RelationalOperator       op;

            if (splitIndex == 1 && S[0].Interval.LongSize == 1)
            {
                op     = RelationalOperator.Equal;
                result = new RelationalBranchDecision(op, S[0].Interval.First);
            }
            else if (splitIndex == (S.Count - 1) && S[splitIndex].Interval.LongSize == 1)
            {
                op     = RelationalOperator.NotEqual;
                result = new RelationalBranchDecision(op, splitElement);
            }
            else
            {
                op     = RelationalOperator.Less;
                result = new RelationalBranchDecision(op, splitElement);
            }

            result.Left  = GenTree(S.SubSlice(0, splitIndex));
            result.Right = GenTree(S.SubSlice(splitIndex));

            return(result);
        }