code: func Parse(payload []byte) (Event, error) {
  	action, err := ParseName(payload)
  	if err != nil {
  		return nil, err
  	}
  
  	return switchEvent(action, payload)
  }
docs: // Parse takes a payload and attempts to deserialize the payload into an event type
  // that matches the event action in the payload. If no direct match is found, then a DefaultEvent is returned.
  //
  // Parse returns type is an Event interface. Therefore, you must perform typecasting
  // to access any event-specific field.