| createHoleSection(Coordinate[], int, Coordinate) |  | 0% |  | 0% | 5 | 5 | 12 | 12 | 1 | 1 |
| findJoinableVertex(Coordinate) |  | 0% |  | 0% | 4 | 4 | 9 | 9 | 1 | 1 |
| nodeRings() |  | 0% |  | 0% | 4 | 4 | 9 | 9 | 1 | 1 |
| addJoinedHole(int, Coordinate[], int) |  | 0% |  | 0% | 2 | 2 | 9 | 9 | 1 | 1 |
| createBoundaryIntersector(Coordinate[], Coordinate[][]) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| intersectsBoundary(Coordinate, Coordinate) |  | 0% | | n/a | 1 | 1 | 6 | 6 | 1 | 1 |
| joinHoles() |  | 0% |  | 0% | 2 | 2 | 6 | 6 | 1 | 1 |
| extractOrientedRings(Polygon) |  | 0% |  | 0% | 2 | 2 | 6 | 6 | 1 | 1 |
| findJoinIndex(Coordinate, Coordinate) |  | 0% |  | 0% | 4 | 4 | 5 | 5 | 1 | 1 |
| joinTouchingHole(Coordinate[]) |  | 0% |  | 0% | 2 | 2 | 8 | 8 | 1 | 1 |
| findLowestLeftVertexIndex(Coordinate[]) |  | 0% |  | 0% | 4 | 4 | 7 | 7 | 1 | 1 |
| copyToList(Coordinate[]) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| isLineInterior(List, int, Coordinate) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| sortHoles(Polygon) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| compute() |  | 0% |  | 0% | 3 | 3 | 7 | 7 | 1 | 1 |
| extractOrientedRing(LinearRing, boolean) |  | 0% |  | 0% | 3 | 3 | 7 | 7 | 1 | 1 |
| joinNonTouchingHole(Coordinate[]) |  | 0% | | n/a | 1 | 1 | 6 | 6 | 1 | 1 |
| findHoleTouchIndex(Coordinate[]) |  | 0% |  | 0% | 3 | 3 | 4 | 4 | 1 | 1 |
| joinHole(int, Coordinate[]) |  | 0% |  | 0% | 3 | 3 | 6 | 6 | 1 | 1 |
| next(int, int) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| prev(int, int) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| join(Polygon) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| joinAsPolygon(Polygon) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| PolygonHoleJoiner(Polygon) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |