Prevent setting value of final field

Final fields should not be set by reflection. They are final, so default value is expected to be constant. Resetting that value may occur in ignoring new value, if getter method was inlined by compiler's optimization.
Call `Assert.fail` instead so you can remove the local `illegalStateException`.