The tricky bit for me was that since we're using the apiVersion field in an anonymous class that we construct, the compiler needs to know that the field is final, and the compiler wasn't able to disambiguate between a nonfinal parameter in the constructor and the final field in the class that both had the same name.