| equateDistribution(ListMultimap) |   | 0% |   | 0% | 9 | 9 | 35 | 35 | 1 | 1 | 
| computeScanRangeAssignment(List) |    | 64% |    | 50% | 13 | 17 | 23 | 55 | 0 | 1 | 
| redistributeSplit(Multimap, Backend, Backend) |   | 0% |   | 0% | 10 | 10 | 22 | 22 | 1 | 1 | 
| init(BeSelectionPolicy) |    | 60% |    | 50% | 5 | 8 | 9 | 22 | 0 | 1 | 
| selectExactNodes(Map, String[]) |   | 0% |   | 0% | 3 | 3 | 6 | 6 | 1 | 1 | 
| selectNodes(int, Iterator) |   | 0% |   | 0% | 4 | 4 | 5 | 5 | 1 | 1 | 
| isSplitLocal(String[], String) |   | 0% |   | 0% | 3 | 3 | 4 | 4 | 1 | 1 | 
| isSplitLocal(List, String) |   | 0% |   | 0% | 3 | 3 | 5 | 5 | 1 | 1 | 
| lambda$computeScanRangeAssignment$0(Backend) |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| setEnableSplitsRedistribution(boolean) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| getBackends() |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| getAssignedWeightPerBackend() |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| lambda$computeScanRangeAssignment$1(Backend) |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| chooseNodeForSplit(List) |   | 100% |    | 75% | 1 | 3 | 0 | 9 | 0 | 1 | 
| FederationBackendPolicy(NodeSelectionStrategy) |   | 100% |  | n/a | 0 | 1 | 0 | 9 | 0 | 1 | 
| getNextBe() |   | 100% |  | n/a | 0 | 1 | 0 | 3 | 0 | 1 | 
| init(List) |   | 100% |  | n/a | 0 | 1 | 0 | 8 | 0 | 1 | 
| static {...} |   | 100% |  | n/a | 0 | 1 | 0 | 4 | 0 | 1 | 
| init() |   | 100% |    | 50% | 1 | 2 | 0 | 4 | 0 | 1 | 
| FederationBackendPolicy() |   | 100% |  | n/a | 0 | 1 | 0 | 2 | 0 | 1 | 
| numBackends() |   | 100% |  | n/a | 0 | 1 | 0 | 1 | 0 | 1 |