case-classes companion-object Java
case-classes variables equals hashCode
case-classes best practices variables equals hashCode
tuples case-classes apply method tupled Function traits
case-classes private