private void OnTransportNetworkCellAdded(TransportNetworkType networkType, TransportCellKey cellKey)
        {
            if (networkType != NetworkType)
            {
                return;
            }
            var nodeIds         = m_transportApi.GetNodeIdsForNetworkInCell(networkType, cellKey);
            var directedEdgeIds = m_transportApi.GetDirectedEdgeIdsForNetworkInCell(networkType, cellKey);
            var wayIds          = m_transportApi.GetWayIdsForNetworkInCell(networkType, cellKey);

            AddForCell(cellKey, nodeIds, directedEdgeIds, wayIds);
        }
        /// <summary>
        /// Get all TransportDirectedEdge objects currently streamed in for the given transport network and cell.
        /// </summary>
        /// <param name="transportApi">TransportApi instance.</param>
        /// <param name="transportNetwork">The returned results are filtered to contain only objects belonging to this transport network.</param>
        /// <param name="cellKey">The returned results are filtered to contain only objects belonging to this cell.</param>
        /// <returns>The list of TransportDirectedEdge objects for the given network and cell.</returns>
        static public IList <TransportDirectedEdge> GetDirectedEdgesForNetworkAndCell(this TransportApi transportApi, TransportNetworkType transportNetwork, TransportCellKey cellKey)
        {
            var directedEdgeIds = transportApi.GetDirectedEdgeIdsForNetworkInCell(transportNetwork, cellKey);
            var directedEdges   = new List <TransportDirectedEdge>();

            foreach (var directedEdgeId in directedEdgeIds)
            {
                TransportDirectedEdge directedEdge;
                if (!transportApi.TryGetDirectedEdge(directedEdgeId, out directedEdge))
                {
                    throw new System.ArgumentOutOfRangeException("unable to fetch TransportDirectedEdge");
                }
                directedEdges.Add(directedEdge);
            }
            return(directedEdges);
        }