public bool IsNonNested()
        {
            BuildQuadtree();

            int nCount = rings.Count;

            for (int i = 0; i < nCount; i++)
            {
                LinearRing      innerRing    = (LinearRing)rings[i];
                ICoordinateList innerRingPts = innerRing.Coordinates;

                IList results      = quadtree.Query(innerRing.Bounds);
                int   nResultCount = results.Count;
                for (int j = 0; j < nResultCount; j++)
                {
                    LinearRing      searchRing    = (LinearRing)results[j];
                    ICoordinateList searchRingPts = searchRing.Coordinates;

                    if (innerRing == searchRing)
                    {
                        continue;
                    }

                    if (!innerRing.Bounds.Intersects(searchRing.Bounds))
                    {
                        continue;
                    }

                    Coordinate innerRingPt = IsValidOp.FindPointNotNode(innerRingPts, searchRing, graph);
                    Debug.Assert(innerRingPt != null, "Unable to find a ring point not a node of the search ring");

                    bool IsInside = CGAlgorithms.IsPointInRing(innerRingPt, searchRingPts);
                    if (IsInside)
                    {
                        nestedPt = innerRingPt;
                        return(false);
                    }
                }
            }

            return(true);
        }
        private bool IsInside(LinearRing innerRing, LinearRing searchRing)
        {
            ICoordinateList innerRingPts  = innerRing.Coordinates;
            ICoordinateList searchRingPts = searchRing.Coordinates;

            if (!innerRing.Bounds.Intersects(searchRing.Bounds))
            {
                return(false);
            }

            Coordinate innerRingPt = IsValidOp.FindPointNotNode(innerRingPts, searchRing, graph);

            Debug.Assert(innerRingPt != null, "Unable to find a ring point not a node of the search ring");

            bool IsInside = CGAlgorithms.IsPointInRing(innerRingPt, searchRingPts);

            if (IsInside)
            {
                nestedPt = innerRingPt;
                return(true);
            }

            return(false);
        }