I wanted to clarify some things on this page which might help people understand more of the concepts:
Show that the data class can override any default method (such as equals) as well
Make it clear that instances' hashCodes are only equal iff they have exactly the same attributes, not if the objects are structurally equal
Show that the copy method really does create a new instance by checking referential equality with the copied object
(- Also remove () from one of the hashCodes in the plain text to make it consistent)
I wanted to clarify some things on this page which might help people understand more of the concepts: