public async Task RemoveBehaviourAsync(string reference) { var found = Behaviours.Where(b => b.UniqueReference == reference).ToList(); Behaviours.RemoveAll(b => b.UniqueReference == reference); UpdateFrameProcessors(); if (Connection == ConnectedState.Connected) { foreach (var behaviour in found) { if (behaviour.ActionOnRemoved != null) { EnqueueAction(behaviour.ActionOnRemoved); } } await ActOnAnyBehaviourPermanentRequirements(); await UnregisterBehavioursAsync(found); } OnBehaviourEvent?.Invoke(Behaviours, BehaviourEvent.Remove); }