public async Task <IFormattedValue> VisitDictionaryMatchFormatter(IUshortsFormatter formatter)
        {
            IChosenFromListValue         chosenFromListValue         = _typesContainer.Resolve <IChosenFromListValue>();
            IDictionaryMatchingFormatter dictionaryMatchingFormatter = formatter as IDictionaryMatchingFormatter;

            chosenFromListValue.InitList(dictionaryMatchingFormatter.StringDictionary.Values);

            if (!dictionaryMatchingFormatter.StringDictionary.Any((pair => pair.Key == _ushortsPayload[0])))
            {
                if (dictionaryMatchingFormatter.UseDefaultMessage)
                {
                    chosenFromListValue.SelectedItem = dictionaryMatchingFormatter.DefaultMessage;
                    return(chosenFromListValue);
                }

                chosenFromListValue.SelectedItem = this._ushortsPayload[0].ToString();
                return(chosenFromListValue);
            }

            if (dictionaryMatchingFormatter.IsKeysAreNumbersOfBits)
            {
                BitArray bitArray      = new BitArray(new int[] { _ushortsPayload[0] });
                bool     isValueExists = false;
                for (ushort i = 0; i < bitArray.Length; i++)
                {
                    if ((bitArray[i]) && (dictionaryMatchingFormatter.StringDictionary.ContainsKey(i)))
                    {
                        chosenFromListValue.SelectedItem = dictionaryMatchingFormatter.StringDictionary[i];
                        isValueExists = true;
                    }
                }

                if ((!isValueExists) && (dictionaryMatchingFormatter.StringDictionary.ContainsKey(0)))
                {
                    chosenFromListValue.SelectedItem = dictionaryMatchingFormatter.StringDictionary[0];
                }
            }
            else
            {
                chosenFromListValue.SelectedItem = dictionaryMatchingFormatter.StringDictionary[_ushortsPayload[0]];
            }

            return(chosenFromListValue);
        }
        public async Task <ushort[]> VisitDictionaryMatchFormatter(IUshortsFormatter formatter)
        {
            IChosenFromListValue         chosenFromListValue         = _formattedValue as IChosenFromListValue;
            IDictionaryMatchingFormatter dictionaryMatchingFormatter = formatter as IDictionaryMatchingFormatter;

            ushort[] resultedUshorts = new ushort[1];
            if (dictionaryMatchingFormatter.IsKeysAreNumbersOfBits)
            {
                BitArray bitArray  = new BitArray(16);
                ushort   numberKey = dictionaryMatchingFormatter.StringDictionary
                                     .First((pair => pair.Value == chosenFromListValue.SelectedItem)).Key;
                bitArray[numberKey] = true;
                resultedUshorts[0]  = (ushort)bitArray.GetIntFromBitArray();
            }
            else
            {
                resultedUshorts[0] = dictionaryMatchingFormatter.StringDictionary
                                     .First((pair => pair.Value == chosenFromListValue.SelectedItem))
                                     .Key;
            }

            return(resultedUshorts);
        }