public EventEnvironment Enter(TypeEnvironment typeEnv) { var eventDef = typeEnv.Type.ResolveEvent(this); if (eventDef == null) { throw new InvalidOperationException("unable to resolve event"); } return(typeEnv.AddEvent(eventDef)); }