code: func (c *EventHistoryCollector) typeMatches(event types.BaseEvent, spec *types.EventFilterSpec) bool {
  	if len(spec.EventTypeId) == 0 {
  		return true
  	}
  
  	matches := func(name string) bool {
  		for _, id := range spec.EventTypeId {
  			if id == name {
  				return true
  			}
  		}
  		return false
  	}
  	kind := reflect.ValueOf(event).Elem().Type()
  
  	if matches(kind.Name()) {
  		return true // concrete type
  	}
  
  	field, ok := kind.FieldByNameFunc(matches)
  	if ok {
  		return field.Anonymous // base type (embedded field)
  	}
  	return false
  }
docs: // typeMatches returns true if one of the spec EventTypeId types matches the event.