private IReadOnlyList <string> readAllValuesFrom(DirectoryReader reader, string field)
        {
            var rawValues = reader.ReadRawValuesFrom(field);

            IEnumerable <string> enumerable;

            if (_adapter.IsFloatField(field))
            {
                enumerable = rawValues.Select(term => term.TryParseFloat())
                             .Where(val => val.HasValue)
                             .Select(val => val.Value)
                             .Distinct()
                             .OrderBy(val => val)
                             .Select(val => val.ToString(Str.Culture));
            }

            else if (_adapter.IsIntField(field))
            {
                enumerable = rawValues.Select(term => term.TryParseInt())
                             .Where(val => val.HasValue)
                             .Select(val => val.Value)
                             .Distinct()
                             .OrderBy(val => val)
                             .Select(val => val.ToString(Str.Culture));
            }

            else
            {
                enumerable = rawValues.Select(term => term.Utf8ToString())
                             .Distinct()
                             .OrderBy(Str.Comparer);
            }

            var result = enumerable.ToReadOnlyList();

            return(result);
        }