/// <summary>
        /// Generate the arbiter road network from the internal xyRndf
        /// </summary>
        /// <returns></returns>
        public ArbiterRoadNetwork GenerateRoadNetwork()
        {
            // the road network we're generating
            ArbiterRoadNetwork arn = new ArbiterRoadNetwork();

            arn.Name         = xyRndf.Name;
            arn.CreationDate = xyRndf.CreationDate;

            // if zoens exist
            if (xyRndf.Zones != null)
            {
                // construct zone generator
                ZoneGeneration zg = new ZoneGeneration(xyRndf.Zones);

                // generate zones
                arn = zg.GenerateZones(arn);
            }

            // if segments exist
            if (xyRndf.Segments != null)
            {
                // generate segments
                SegmentGeneration sg = new SegmentGeneration(xyRndf.Segments);

                // generate segments
                arn = sg.GenerateSegments(arn);
            }

            // interconnects
            InterconnectGeneration ig = new InterconnectGeneration(xyRndf);

            arn = ig.GenerateInterconnects(arn);

            // adjacency (lane, partition, entry)
            AdjacencyGeneration ag = new AdjacencyGeneration();

            arn = ag.GenerateAdjacencies(arn);

            // other stuff (vehicle areas)
            arn.GenerateVehicleAreas();

            // return
            return(arn);
        }
        /// <summary>
        /// Generate the arbiter road network from the internal xyRndf
        /// </summary>
        /// <returns></returns>
        public ArbiterRoadNetwork GenerateRoadNetwork()
        {
            // the road network we're generating
            ArbiterRoadNetwork arn = new ArbiterRoadNetwork();
            arn.Name = xyRndf.Name;
            arn.CreationDate = xyRndf.CreationDate;

            // if zoens exist
            if (xyRndf.Zones != null)
            {
                // construct zone generator
                ZoneGeneration zg = new ZoneGeneration(xyRndf.Zones);

                // generate zones
                arn = zg.GenerateZones(arn);
            }

            // if segments exist
            if (xyRndf.Segments != null)
            {
                // generate segments
                SegmentGeneration sg = new SegmentGeneration(xyRndf.Segments);

                // generate segments
                arn = sg.GenerateSegments(arn);

            }

            // interconnects
            InterconnectGeneration ig = new InterconnectGeneration(xyRndf);
            arn = ig.GenerateInterconnects(arn);

            // adjacency (lane, partition, entry)
            AdjacencyGeneration ag = new AdjacencyGeneration();
            arn = ag.GenerateAdjacencies(arn);

            // other stuff (vehicle areas)
            arn.GenerateVehicleAreas();

            // return
            return arn;
        }