eliminateHoles function
        
dynamic
eliminateHoles(
    
    
- dynamic data,
- dynamic holeIndices,
- dynamic outerNode,
- dynamic dim,
Implementation
eliminateHoles(data, holeIndices, outerNode, dim) {
  var queue = [];
  late int start;
  late int end;
  Node? list;
  for (int i = 0, len = holeIndices.length; i < len; i++) {
    start = holeIndices[i] * dim;
    end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
    list = linkedList(data, start, end, dim, false);
    if (list == list?.next) list?.steiner = true;
    queue.add(getLeftmost(list!));
  }
  queue.sort((a, b) => compareX(a, b));
  // process holes from left to right
  for (int i = 0; i < queue.length; i++) {
    eliminateHole(queue[i], outerNode);
    outerNode = filterPoints(outerNode, outerNode.next);
  }
  return outerNode;
}