Hit some nasty issues with my first approach of using sparse structs: where the 'team1' and 'team2' field names had different shapes in different messages the unmarshalling would silently fail. So now I'm progressively decoding the message as different types to hone in on what type of message it actually is.