bool TryReadImmediateGiven(Event e, EventType type, out FlowCall.Given call) { call = null; var routes = type.GetRoutes(e).ToMany(); if (routes.Contains(_topicKey) && TryGetObservation(type, out var observation) && observation.HasGiven(Event.IsScheduled(e))) { var point = new TimelinePoint( _newPosition, _cause, type, e.When, Event.Traits.WhenOccurs.Get(e), Event.Traits.EventId.Get(e), Event.Traits.CommandId.Get(e), Event.Traits.UserId.Get(e), _topicKey, routes, () => e); call = new FlowCall.Given(point, observation); } return(call != null); }