Split method "testGetCopyableFieldsForType" to a few.
Split method "testCopyWithClassLevelMetadata" to a few.
Split method "testCopyWithPropertyLevelMetadata" to a few.
Create data class for testing: ClassLevelCloneableSubclass.
Tests for ClassLevelCloneableSubclass.
Create data class for testing: ClassLevelCopyableSubclass.
Tests for ClassLevelCopyableSubclass.
Extract static private method Cloner.isTypeCloneable(type).
Create new error class: CloningError.
Throw error in Cloner.clone() method if "source" parameter is not instance of class marked as [Cloneable].
Actualize unit tests.
Add comment.
Remove checking for marking source as cloneable.
Rename static method:
Cloner.dolly_internal::getCloneableFieldsForType -> dolly_internal::findAllCloneableFieldsForType.
Extract static method: Cloner.dolly_internal::getWritableFieldsOfType()
Get writable fields of superclasses.
Optimize cloning performance.
Actualize unit tests.
Optimize performance for finding of writable fields of Type.
Rename local variable in method Cloner.clone().