// 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();
 }