/// <summary>
        /// Removes the overlap with default settings.
        /// </summary>
        /// <param name="graph"></param>
        /// <param name="nodeSeparation"></param>
        public static void RemoveOverlaps(GeometryGraph graph, double nodeSeparation)
        {
            var settings = new OverlapRemovalSettings {
                RandomizeAllPointsOnStart = true,
                NodeSeparation            = nodeSeparation
            };
            var mst = new OverlapRemoval(settings);

            mst.RemoveOverlap(graph);
        }
        void FindOverlapsWithInterval(int i)
        {
            if (_intervalTree == null)
            {
                return;
            }
            var interval = GetInterval(i);

            foreach (int j in _intervalTree.GetAllIntersecting(interval))
            {
                var tuple = OverlapRemoval.GetIdealEdgeLength(i, j,
                                                              _nodePositions[i], _nodePositions[j], _nodeSizes);

                if (!(tuple.Item3 > 1))
                {
                    return;
                }
                _proximityEdges.Add(tuple);
                _numberOfOverlaps++;
            }
        }