Even though GetService<T> still exists, GetRequiredService<T> preserves the old behavior of throwing for missing services.