public override void Write(Utf8JsonWriter writer, TMessage value, JsonSerializerOptions options) { // Note: This logic replicates Google.Protobuf. Should follow their lead. var paths = (IList <string>)value.Descriptor.Fields[FieldMask.PathsFieldNumber].Accessor.GetValue(value); var firstInvalid = paths.FirstOrDefault(p => !Legacy.IsPathValid(p)); if (firstInvalid == null) { writer.WriteStringValue(string.Join(",", paths.Select(Legacy.ToJsonName))); } else { throw new InvalidOperationException($"Invalid field mask to be converted to JSON: {firstInvalid}."); } }