Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The existing code encodes all the properties of a data class even ones not
in the primary constructor but only ever uses the primary constructor.
Any private properties cause this code to fail as we do not have access to
them (the isAccessible trick doesn't work on private properties that do not
have a backing store).
This changes the code to only encode the properties of the primary constructor's
parameters. As data classes only have property parameters in the primary
constructor, this is sufficient.
As part of reading the values the isAccessible flag is adjusted to make the
values accessible and now the logic resets the isAccessible flag to its original
value after processing.
Also added a check for IllegalAccessException that displays the parameter that
caused the problem to help with debugging in the future. In theory this won't
happen, but if something changes in how properties are handled in the future
this should help identify the issue.