// Writing discriminating union is simpler than reading. public static void WriteValue(this IJSValueWriter writer, OneOf2 <T2Extra, R2D2Extra> value) { writer.WriteObjectBegin(); if (value.TryGet(out T2Extra t2)) { writer.WriteObjectProperty("Kind", RobotModel.T2); writer.WriteObjectProperties(t2); } else if (value.TryGet(out R2D2Extra r2d2)) { writer.WriteObjectProperty("Kind", RobotModel.R2D2); writer.WriteObjectProperties(r2d2); } writer.WriteObjectEnd(); }