private SegmentTrackInfo GetOrCreateSegmentTrackInfo(TrackInfo trackInfo, ISegment targetSegment)
        {
            if (trackInfo.SegmentTrackInfos == null)
            {
                var exceptionMessage =
                    string.Format("SegmentTrackInfos is null for project {0}  and segment {1}!",
                        trackInfo.ProjectName, targetSegment);
                throw new ArgumentNullException(exceptionMessage);
            }

            if (targetSegment == null)
            {
                var exceptionMessage =
                    string.Format("Segment is null for {0}!",
                        trackInfo.ProjectName);
                throw new ArgumentNullException(exceptionMessage);
            }

            if (targetSegment.Properties == null)
            {
                var exceptionMessage =
                    string.Format("Segment properties are null for {0}!",
                        trackInfo.ProjectName);
                throw new ArgumentNullException(exceptionMessage);
            }

            var segment = trackInfo.SegmentTrackInfos.Find(x => x.SegmentId == targetSegment.Properties.Id.Id);

            if (segment == null)
            {
                var segmentId = targetSegment.Properties.Id.Id;

                segment = new SegmentTrackInfo {SegmentId = segmentId};
                trackInfo.SegmentTrackInfos.Add(segment);
            }
            return segment;
        }
        private SegmentTrackInfo GetOrCreateSegmentTrackInfo(TrackInfo trackInfo, ISegment targetSegment)
        {
            var segment = trackInfo.SegmentTrackInfos.Find(x => x.SegmentId == targetSegment.Properties.Id.Id);

            if (segment == null)
            {
                var segmentId = targetSegment.Properties.Id.Id;

                segment = new SegmentTrackInfo {SegmentId = segmentId};
                trackInfo.SegmentTrackInfos.Add(segment);
            }
            return segment;
        }