private void createClump(IEnumerable <int> component)
        {
            var clump = new Clump(component.Select(this.OrdinalToObstacle));

            foreach (var obstacle in clump)
            {
                obstacle.Clump = clump;
            }
        }
        private void CreateClumps()
        {
            var graph = new BasicGraphOnEdges <IntPair>(this.overlapPairs);
            var connectedComponents = ConnectedComponentCalculator <IntPair> .GetComponents(graph);

            foreach (var component in connectedComponents)
            {
                // GetComponents returns at least one self-entry for each index - including the < FirstNonSentinelOrdinal ones.
                if (component.Count() == 1)
                {
                    continue;
                }
                var clump = new Clump(component.Select(this.OrdinalToObstacle));
                foreach (var obstacle in clump)
                {
                    obstacle.Clump = clump;
                }
            }
        }