public override bool RemoveActivity(T activityId) { lock (m_Lock) { // Clear out the activity from compiled dependencies first. IEnumerable <T> dependentActivityIds = m_ArrowGraphBuilder .Activities .Where(x => x.Dependencies.Contains(activityId)) .Select(x => x.Id); foreach (T dependentActivityId in dependentActivityIds) { var dependentActivity = m_ArrowGraphBuilder.Activity(dependentActivityId); dependentActivity.Dependencies.Remove(activityId); } m_ArrowGraphBuilder.Activity(activityId)?.SetAsRemovable(); return(m_ArrowGraphBuilder.RemoveActivity(activityId)); } }