     EdgeLengths.Value == Distance
   {
     var vertexVisitationState = makeDefaultColorMap(repeating: .white)
-    var distancesToVertex = DictionaryPropertyMap(repeating: effectivelyInfinite, forVerticesIn: self)
+    var distancesToVertex = DictionaryPropertyMap(repeating: Distance.effectiveInfinity, forVerticesIn: self)
 
     do {
       try dijkstraSearch(

    }
  }


  /// Returns distances from `startVertex` in `self` using `edgeLengths` starting from `startVertex`
  /// and terminating once `endVertex` has been encountered; `callback` is invoked at key events
  /// during the search.
  public mutating func dijkstraSearch<
    Distance: FloatingPoint,
    EdgeLengths: PropertyMap
  >(
    startingAt startVertex: VertexId,
    endingAt goalVertex: VertexId,
    edgeLengths: EdgeLengths,
    callback: DijkstraSearchCallback
  ) rethrows -> TablePropertyMap<Self, VertexId, Distance>
  where
    EdgeLengths.Graph == Self,
    EdgeLengths.Key == EdgeId,
    EdgeLengths.Value == Distance
  {
    try dijkstraSearch(
      startingAt: startVertex,
      endingAt: goalVertex,
      edgeLengths: edgeLengths,
      effectivelyInfinite: Distance.infinity,
      callback: callback)
  }


  /// Returns distances from `startVertex` in `self` using `edgeLengths` starting from `startVertex`
  /// and terminating once `endVertex` has been encountered; `callback` is invoked at key events
  /// during the search.
  public mutating func dijkstraSearch<
    Distance: FixedWidthInteger,
    EdgeLengths: PropertyMap
  >(
    startingAt startVertex: VertexId,
    endingAt goalVertex: VertexId,
    edgeLengths: EdgeLengths,
    callback: DijkstraSearchCallback
  ) rethrows -> TablePropertyMap<Self, VertexId, Distance>
  where
    EdgeLengths.Graph == Self,
    EdgeLengths.Key == EdgeId,
    EdgeLengths.Value == Distance
  {
    try dijkstraSearch(
      startingAt: startVertex,
      endingAt: goalVertex,
      edgeLengths: edgeLengths,
      effectivelyInfinite: Distance.max,
      callback: callback)
  }
}

extension IncidenceGraph where Self: SearchDefaultsGraph, VertexId: Hashable {
  /// Executes Dijkstra's search algorithm over `self` from `startVertex` using edge weights from
  /// `edgeLengths`; `callback` is called at key events of the search.
  public mutating func dijkstraSearch<
    Distance: Comparable & AdditiveArithmetic,
    EdgeLengths: PropertyMap
  >(
    startingAt startVertex: VertexId,
    edgeLengths: EdgeLengths,
    effectivelyInfinite: Distance,
    callback: DijkstraSearchCallback
  ) rethrows -> DictionaryPropertyMap<Self, VertexId, Distance>
  where

        edgeLengths: edgeLengths,
        workList: [PriorityQueueElement<Distance, VertexId>](),
        workListIndex: ArrayPriorityQueueIndexer(count: vertexCount),
        effectivelyInfinite: Distance.effectiveInfinity
      ) { e, g in
        try callback(e, &g)
        if case .examineVertex(let vertex) = e, vertex == goalVertex {
