code: func (c *EventCorrelator) EventCorrelate(newEvent *v1.Event) (*EventCorrelateResult, error) {
  	if newEvent == nil {
  		return nil, fmt.Errorf("event is nil")
  	}
  	aggregateEvent, ckey := c.aggregator.EventAggregate(newEvent)
  	observedEvent, patch, err := c.logger.eventObserve(aggregateEvent, ckey)
  	if c.filterFunc(observedEvent) {
  		return &EventCorrelateResult{Skip: true}, nil
  	}
  	return &EventCorrelateResult{Event: observedEvent, Patch: patch}, err
  }
docs: // EventCorrelate filters, aggregates, counts, and de-duplicates all incoming events