Shame `Objects.firstNonNull` doesn't also accept a vararg, or overloads with more than two params!
Code would feel cleaner to me if you separated out a method `private <T> T firstNonNull(T... args)` that just did something like `for (T arg : args) { if (arg != null) return arg; }; throw new NullPointerException();`