I agree with you. Especially, since the following yields the expected result - 5.
Static Initialization Blocks says -
The runtime system guarantees that static initialization blocks are called in the order that they appear in the source code.
It probably applies to a sequence of static variable initialization as well (versus a static block).
Regards,
Dan