As specified in the Microsoft documentation,
http://windowssdk.msdn.microsoft.com/en-us/library/ms682009.aspx
"All strings in the environment block must be sorted alphabetically by name. The sort is case-insensitive, Unicode order, without regard to locale"
Unfortunately, this specification does not make it clear whether a character between
the lower-case range and the upper-case range, such as "_", should sort
before or after the alphabetic characters. An empirical test shows that it
Windows (actually cmd.exe's "set" command) sorts it after, while Java's
implementation sorts it before.