private void DiscoverGivens(AggregateSchema type) { foreach (var givenMethod in GetGivensMethods(type.Type)) { var eventType = givenMethod.GetParameters()[1].ParameterType; if (givenMethod.ReturnType != type.StateType) { throw new InvalidAggregateSchemaException(type.Type, eventType); } var isOwnedByAggregate = eventType.Namespace == type.Type.Namespace; AggregateEventSchema es = new AggregateEventSchema(eventType, true, isOwnedByAggregate); type.Events.Add(es); _events.Add(es); _eventIndex.TryAdd(eventType, type); } }