protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
var prop = base.CreateProperty(member, memberSerialization);
var pi = member as PropertyInfo;
if (pi != null)
{
prop.Readable = (pi.GetGetMethod(true) != null);
prop.Writable = (pi.GetSetMethod(true) != null);
}
Predicate<object> shouldSerialize = prop.ShouldSerialize;
prop.ShouldSerialize = obj => (shouldSerialize == null || shouldSerialize(obj)) && !IsEmptyCollection(prop, obj);
return prop;
}