protected override IList <JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
            {
                lock (_propertiesCache)
                {
                    var props = base.CreateProperties(type, memberSerialization);

                    if (_propertiesCache.TryGetValue(type, out var properties))
                    {
                        return(properties);
                    }

                    properties = props.Where(p =>
                                             p.Writable || _tyeDescription != null && _tyeDescription.IsIndexed(p.PropertyName)).ToList();
                    _propertiesCache[type] = properties;

                    return(properties);
                }
            }