private static void ProcessCase(JsonReader reader, List<string> list, Func<string, string, bool> statusFilter) { Debug.Assert(reader.TokenType == JsonToken.StartObject); reader.Read(); string className = null; string name = null; string status = null; do { if (reader.TokenType == JsonToken.PropertyName) { var propertyName = (string)reader.Value; switch (propertyName) { case "name": name = reader.ReadAsString(); ; break; case "className": className = reader.ReadAsString(); break; case "status": status = reader.ReadAsString(); break; default: reader.ReadProperty(); break; } } else { reader.Read(); } } while (reader.TokenType != JsonToken.EndObject && reader.TokenType != JsonToken.None); if (className != null && name != null && status != null) { var fullName = $"{className}.{name}"; if (statusFilter(fullName, status)) { list.Add(fullName); } } // Read the closing } for the case if (reader.TokenType == JsonToken.EndObject) { reader.Read(); } }