private List <PokerDetailInformation> GetWinnerCore(List <PokerDetailInformation> details, ICompare compare)
        {
            if (details == null || details.Count < 1)
            {
                throw new InvalidOperationException("Wrong data");
            }
            if (details.Count == 1)
            {
                return(details);
            }
            var currentWinners = new List <PokerDetailInformation>()
            {
                details[0]
            };

            for (var i = 1; i < details.Count; i++)
            {
                var compareResult = compare.GetWinner(currentWinners.First(), details[i]);
                if (compareResult.Count > 1)
                {
                    currentWinners.Add(details[i]);
                }
                else
                {
                    currentWinners = compareResult;
                }
            }
            return(currentWinners);
        }