// OLD STYLE:
        public static void ClearSegments(IChannel branch)
        {
            IList<BranchSegment> segments = branch.HydroNetwork.BranchSegments;
            IList<BranchSegmentBoundary> segmentBoundaries = branch.HydroNetwork.BranchSegmentBoundaries;
            IList<BranchSegmentCenter> segmentCenters = branch.HydroNetwork.BranchSegmentCenters;
            // First remove the existing segments
            var toBeRemoved = new List<BranchSegment>();
            foreach (BranchSegment branchSegment in branch.BranchSegments)
            {
                // update the branch features that are linked to this branch
                toBeRemoved.Add(branchSegment);
            }
            foreach (BranchSegment branchSegment in toBeRemoved)
            {
                segments.Remove(branchSegment);
                segmentBoundaries.Remove(branchSegment.BranchSegmentBoundaryStart);
                segmentCenters.Remove(branchSegment.BranchSegmentCenter);
            }
            if (toBeRemoved.Count > 0)
            {
                segmentBoundaries.Remove(toBeRemoved[toBeRemoved.Count - 1].BranchSegmentBoundaryEnd);
            }

            branch.BranchSegments.Clear();
        }


// NEW STYLE:
        public static void ClearSegments(IChannel branch)
        {
            branch.BranchSegments.Clear();
            branch.BranchSegmentBoundaries.Clear();
            branch.BranchSegmentCenters.Clear();
        }

A bit easier (smile)