private static object Extract(Zone z) { if (z == null) return null; return new { controller = z.GetControllerId(), cards = Extract(z.GetCards()) }; }