public void NotifyTransportGraphChanged(
            TransportNetworkType transportNetworkType,
            TransportCellKey cellKey,
            TransportGraphChangeReason transportGraphChangeReason
            )
        {
            switch (transportGraphChangeReason)
            {
            case TransportGraphChangeReason.TransportGraphCellAdded:
                if (OnTransportNetworkCellAdded != null)
                {
                    OnTransportNetworkCellAdded(transportNetworkType, cellKey);
                }
                break;

            case TransportGraphChangeReason.TransportGraphCellRemoved:
                if (OnTransportNetworkCellRemoved != null)
                {
                    OnTransportNetworkCellRemoved(transportNetworkType, cellKey);
                }
                break;

            case TransportGraphChangeReason.TransportGraphCellUpdated:
                if (OnTransportNetworkCellUpdated != null)
                {
                    OnTransportNetworkCellUpdated(transportNetworkType, cellKey);
                }
                break;

            default:
                throw new System.ArgumentOutOfRangeException("transportGraphChangeReason");
            }
        }
        public static void OnTransportGraphChanged(
            IntPtr transportApiHandle,
            TransportNetworkType transportNetworkType,
            MortonKeyInterop cellKeyInterop,
            TransportGraphChangeReason transportGraphChangeReason)
        {
            var transportApiInternal = transportApiHandle.NativeHandleToObject <TransportApiInternal>();
            var cellKey = cellKeyInterop.FromInterop();

            transportApiInternal.NotifyTransportGraphChanged(transportNetworkType, cellKey, transportGraphChangeReason);
        }