# JEP 500: reflection writing to a final field, same class file behaviour on 25 and on 26

=== JDK 25 (class compiled --release 25)
    field reads    : 9090
    port() returns : 8080

=== JDK 26, defaults
    WARNING: Final field port in class FinalFieldMutation$Config has been mutated reflectively by class FinalFieldMutation in unnamed module @<hash> (file:<repo>/build/recap26/26/)
    WARNING: Use --enable-final-field-mutation=ALL-UNNAMED to avoid a warning
    WARNING: Mutating final fields will be blocked in a future release unless final field mutation is enabled
    field reads    : 9090
    port() returns : 8080

=== JDK 26, --enable-final-field-mutation=ALL-UNNAMED (the opt-in the warning asks for)
    field reads    : 9090
    port() returns : 8080

=== JDK 26, --illegal-final-field-mutation=deny (what a future default will look like)
    setInt refused : class FinalFieldMutation (in unnamed module @<hash>) cannot set final field FinalFieldMutation$Config.port (in unnamed module @<hash>), unnamed module @<hash> is not allowed to mutate final fields

=== JDK 26, --illegal-final-field-mutation=debug (warning plus the offending stack trace)
    Final field port in class FinalFieldMutation$Config has been mutated reflectively by class FinalFieldMutation in unnamed module @<hash> (file:<repo>/build/recap26/26/)
    	at java.base/java.lang.reflect.Field.postSetFinal(Field.java:1534)
    	at java.base/java.lang.reflect.Field.setFinal(Field.java:1449)
    	at java.base/java.lang.reflect.Field.setInt(Field.java:1134)
    	at FinalFieldMutation.main(FinalFieldMutation.java:22)
    field reads    : 9090
    port() returns : 8080

=== JDK 26, JFR default settings, [no flag]: jfr print --events jdk.FinalFieldMutation
    jdk.FinalFieldMutation 
    declaringClass = FinalFieldMutation$Config (classLoader = app)
    fieldName = "port"
    FinalFieldMutation.main(String[]) line: 22
    events recorded: 1

=== JDK 26, JFR default settings, [--enable-final-field-mutation=ALL-UNNAMED]: jfr print --events jdk.FinalFieldMutation
    jdk.FinalFieldMutation 
    declaringClass = FinalFieldMutation$Config (classLoader = app)
    fieldName = "port"
    FinalFieldMutation.main(String[]) line: 22
    events recorded: 1

=== JDK 26, JFR default settings, [--illegal-final-field-mutation=deny]: jfr print --events jdk.FinalFieldMutation
    events recorded: 0
