{
double distanceLowerBound = maxDistance;
BoundablePair minPair = null;
// initialize internal structures
PriorityQueue priQ = new PriorityQueue();
// initialize queue
priQ.add(initBndPair);
while (! priQ.isEmpty() && distanceLowerBound > 0.0) {
// pop head of queue and expand one side of pair
BoundablePair bndPair = (BoundablePair) priQ.poll();
double currentDistance = bndPair.getDistance();
/**
* If the distance for the first node in the queue
* is >= the current minimum distance, all other nodes