public Event ReadFromJson(string json) { if (TryParse(json, out Event result)) { return(result); } else if (successor != null) { return(successor.ReadFromJson(json)); } else { throw new InvalidCastException(); } }