/// <summary>
 /// Returns true if the edge is traversable.
 /// </summary>
 /// <param name="edgeInterpreter"></param>
 /// <param name="tagsIndex"></param>
 /// <param name="tags"></param>
 /// <returns></returns>
 protected override bool CalculateIsTraversable(IEdgeInterpreter edgeInterpreter,
                                                ITagsIndex tagsIndex, TagsCollection tags)
 {
     if (_vehicles.Count > 0)
     { // limit only to vehicles in this list.
         foreach (Vehicle vehicle in _vehicles)
         {
             if (vehicle.CanTraverse(tags))
             { // one of them is enough.
                 return(true);
             }
         }
         return(false);
     }
     return(edgeInterpreter.IsRoutable(tags));
 }
 /// <summary>
 /// Returns true if the edge is traversable.
 /// </summary>
 /// <param name="edgeInterpreter"></param>
 /// <param name="tagsIndex"></param>
 /// <param name="tags"></param>
 /// <returns></returns>
 protected override bool CalculateIsTraversable(IEdgeInterpreter edgeInterpreter,
                                                ITagsIndex tagsIndex, TagsCollection tags)
 {
     return(edgeInterpreter.IsRoutable(tags));
 }