docs: void handleAmbiguousVertexes(List<ChessboardCorner> corners) {
  		List<Vertex> candidates = new ArrayList<>();
  		for (int idx = 0; idx < vertexes.size(); idx++) {
  			Vertex target = vertexes.get(idx);
  
  			// median distance was previously found based on the closer neighbors. In an actual chessboard
  			// there are solid white and black squares with no features, in theory
  			double threshold = target.neighborDistance *ambiguousTol;
  
  			candidates.clear();
  			// only need to search parallel since perpendicular nodes won't be confused for the target
  			for (int i = 0; i < target.parallel.size(); i++) {
  				Edge c = target.parallel.get(i);
  				if( c.distance <= threshold ) {
  					candidates.add(c.dst);
  				}
  			}
  
  			if( candidates.size() > 0 ) {
  				candidates.add(target);
  
  				int bestIndex = -1;
  				double bestScore = 0;
  
  //				System.out.println("==== Resolving ambiguity. src="+target.index);
  				for (int i = 0; i < candidates.size(); i++) {
  					Vertex v = candidates.get(i);
  //					System.out.println("   candidate = "+v.index);
  					double intensity = corners.get(v.index).intensity;
  					if( intensity > bestScore ) {
  						bestScore = intensity;
  						bestIndex = i;
  					}
  				}
  //				System.out.println("==== Resolved ambiguity. Selected "+candidates.get(bestIndex).index);
  
  				for (int i = 0; i < candidates.size(); i++) {
  					if( i == bestIndex )
  						continue;
  					removeReferences(candidates.get(i),EdgeType.PARALLEL);
  					removeReferences(candidates.get(i),EdgeType.PERPENDICULAR);
  				}
  			}
  		}
  	}