на правах костыля можно делать конструктор internal либо генерировать свои equals/hashCode/componentX
internal
не поможет, так как copy
- public
и всё равно засветит параметры, то есть на стороне пользователя достаточно иметь один экземпляр объекта, чтобы получить доступ к полному аналогу приватного конструктора.
Кодогенерация - тоже костыль: усложняется сборка плюс исходный код распухает.
Жаль конечно, очень полезно было бы иметь отдельные деривативы (аспекты) для equals/hashCode, toString, componentX, copy. Или какую-нить аннотацию времени компиляции для отключения части генерации у data class