private static Dictionary<IndexPair, IEnumerable<sbyte>> GetAvailableDictByPairs(GameFieldModel model, IEnumerable<IndexPair> pairs, IndexPair checkedPair, int rank)
        {
            var dict = new Dictionary<IndexPair, IEnumerable<sbyte>>();

            foreach (var pair in pairs)
            {
                if (rank > 1 && model.IsItemNotAvailable(pair, checkedPair))
                {
                    model.SelectedPair = pair;
                    dict.Add(pair, GetHeuristicsAvailableNumbers(model, pair, rank - 1));
                    model.SelectedPair = null;
                }
                else
                {
                    dict.Add(pair, model.GetAvailableNumbers(pair, checkedPair));
                }
            }

            return dict;
        }