traverseByReflection is only a fallback mode, see javadoc of modules.gc.DONT_TRAVERSE_BY_REFLECTION for details.
The easiest solution on this front would be to disable it by default, currently it is enabled by default.
A more elaborate solution could attempt to get fields by method access to avoid private access. However the current implementation intentionally avoids this because of unforeseeable potential side effects of method calls.