public void UpdateFilter() { var oldFilter = m_Filter; DisposeHelper.Dispose(ref m_SourceFilter); try { var input = MakeInitialFilter() .MakeTagged(); m_Filter = m_Chain .Process(input) .Apply(FinalizeOutput) .Compile() .InitializeFilter(); } catch (Exception ex) { m_Filter = HandleError(ex).Compile().InitializeFilter(); m_Filter.AddLabel(ErrorMessage(ex)); } finally { DisposeHelper.Dispose(ref oldFilter); } }