private string Decode()
        {
            StringBuilder buffer = new StringBuilder();

            foreach (char c in String.Where(x => !_charsInTheMiddle.Contains(x)))
            {
                if (_charsForZero.Contains(c))
                {
                    buffer.Append('0');
                }
                else if (_charsForOne.Contains(c))
                {
                    buffer.Append('1');
                }
                else
                {
                    throw new ArgumentException(string.Format("Invalid character '{0}'", c));
                }
            }

            BinaryString binaryStr         = BinaryString.FromBinaryString(buffer.ToString());
            BinaryString reversedBinaryStr = binaryStr.ReverseBinaries();
            BinaryString invertedBinaryStr = reversedBinaryStr.InvertBinaries();

            return(invertedBinaryStr.OriginalString);
        }