using System.Text.Json.Serialization;
[JsonPropertyName("interface-magic")]
class DerivedFromInterface : IBase {
public int Magic { get; init; }
[JsonPropertyName("abstract-magic")]
abstract public int Magic {get; init; }
class DerivedFromAbstract : AbsBase {
override public int Magic { get; init; }
public static void Main()
static void json<T>(T thing) {
var ser = System.Text.Json.JsonSerializer.Serialize(thing);
var easygoing = new DerivedFromInterface() { Magic = 5 };
json(easygoing as IBase);
var uglee = new DerivedFromAbstract() { Magic = 93 };