All three steps are complete. The code compiles successfully. Here's a summary of the refactoring:

---

## Final Diff for `LongRangeForecasts.java`

| Change | Description |
|--------|-------------|
| **Import** | Added `java.util.function.LongFunction` |
| **New no-arg overload** | `longRangeForecast()` — wraps the scorer in a lambda and delegates to the parameterized version |
| **Signature change** | `longRangeForecast(String quarter)` → `longRangeForecast(LongFunction<Boolean> dayOffsetToWeather)` — removed `quarter` param and its Q1/Q4 block |
| **Lambda extraction** | Removed the internal `dayOffsetToWeather` lambda definition; it's now passed as a method parameter |
| **New helper method** | `collectExpectedWeather(List<Instant>, LongFunction<Boolean>)` — extracted weather-collection loop, receives the dependency-injected lambda |

The key outcome is that `Scorer` is no longer directly invoked inside `longRangeForecast`. Its behavior is injected via the `LongFunction<Boolean>` parameter, making the method testable and decoupled from the external dependency.
