private void TraverseNextEdge() { if (PathToFollow == null) { return; } ////TODO: probably should add NextEdge method to Path class PathEdge edgeToFollow = PathToFollow.Dequeue(); if (edgeToFollow == null) { return; } if (PathToFollow.IsEmpty) // last edge { edgeTraverser.Traverse( edgeToFollow, BrakeOnFinalApproach, StopOnFinalArrival); } else { edgeTraverser.Traverse( edgeToFollow, BrakeOnEachApproach, StopOnEachArrival); } }