Also, unfortunately the ordering of the array returned by `getDeclaredFields()` is not defined, either. That didn't matter before your changes, because we never iterated on fFieldsForAnnotations's keys or entries, but now we do.

(if you haven't guessed, at my job we recently got bitten by problems do to iterating over HashMaps)

So for `fFieldsForAnnotations` we should copy the fields into a `LinkedHashmap` (around line 47) and have the map use a comparator that uses `field1.toString().compareTo(field2.toString())`. You can still share *this* method for both, since both maps will have deterministic iteration ordering.