/// <summary>
 /// Node the input segment strings once
 /// and create the split edges between the nodes.
 /// </summary>
 /// <param name="segStrings"></param>
 /// <param name="numInteriorIntersections"></param>
 private void Node(IList segStrings, int[] numInteriorIntersections)
 {
     IntersectionAdder si = new IntersectionAdder(li);
     MCIndexNoder noder = new MCIndexNoder(si);            
     noder.ComputeNodes(segStrings);
     nodedSegStrings = noder.GetNodedSubstrings();
     numInteriorIntersections[0] = si.NumInteriorIntersections;            
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="precisionModel"></param>
        /// <returns></returns>
        private INoder GetNoder(PrecisionModel precisionModel)
        {
            if (workingNoder != null) 
                return workingNoder;

            // otherwise use a fast (but non-robust) noder
            LineIntersector li = new RobustLineIntersector();
            li.PrecisionModel = precisionModel;
            MCIndexNoder noder = new MCIndexNoder(new IntersectionAdder(li));                     
            return noder;
        }