| sendWithRetry(String) |  | 0% |  | 0% | 10 | 10 | 53 | 53 | 1 | 1 |
| parseBatchResponse(String, List, List, String) |   | 74% |   | 63% | 8 | 12 | 17 | 51 | 0 | 1 |
| rateLimit() |  | 0% |  | 0% | 3 | 3 | 9 | 9 | 1 | 1 |
| evaluateBatch(String, List, List, String) |   | 27% |   | 16% | 3 | 4 | 7 | 11 | 0 | 1 |
| evaluate(String, String, String, String) |   | 20% |   | 16% | 3 | 4 | 7 | 10 | 0 | 1 |
| repairTruncatedJson(String) |   | 85% |   | 80% | 5 | 19 | 4 | 38 | 0 | 1 |
| parseResponse(String, String, String, String) |   | 87% |   | 66% | 6 | 10 | 4 | 29 | 0 | 1 |
| resolveModel() |   | 52% |   | 33% | 3 | 4 | 1 | 4 | 0 | 1 |
| extractJson(String) |   | 91% |   | 87% | 1 | 5 | 1 | 15 | 0 | 1 |
| GeminiClient(String, HttpClient, String) |   | 87% |   | 50% | 1 | 2 | 1 | 12 | 0 | 1 |
| parseTrafficLight(String) |   | 54% |   | 50% | 1 | 2 | 3 | 5 | 0 | 1 |
| GeminiClient() |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| close() |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| sanitizeDslRule(String) |   | 93% |   | 75% | 1 | 3 | 0 | 7 | 0 | 1 |
| getIntOrDefault(JsonObject, String, int) |  | 92% |   | 50% | 2 | 3 | 0 | 2 | 0 | 1 |
| hasRemainingQuota() |  | 87% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| createEvaluation(JsonObject, String, String, String) |  | 100% |   | 83% | 1 | 4 | 0 | 22 | 0 | 1 |
| buildRequestBody(String) |  | 100% | | n/a | 0 | 1 | 0 | 11 | 0 | 1 |
| getStringOrNull(JsonObject, String) |  | 100% |   | 75% | 1 | 3 | 0 | 2 | 0 | 1 |
| getBooleanOrDefault(JsonObject, String, boolean) |  | 100% |   | 75% | 1 | 3 | 0 | 2 | 0 | 1 |
| isApiUnavailable() |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| GeminiClient(String) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| GeminiClient(String, HttpClient) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| setMaxFailureDuration(Duration) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getModel() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getDailyRequestCount() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getMaxFailureDuration() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| wasLastResponseTruncated() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |