equals

open operator override fun equals(other: Any?): Boolean

Value equality, kept by hand because IconPaint stopped being a data class when its constructor parameters became body properties backed by placement and source.

Through 1.6.0 two separately built but identically configured icons compared equal, so app code could diff a rebuilt paint against the one already on a layer and skip the update. Without this the class would silently fall back to identity and every such comparison would report a change — the failure is quiet and shows up as redundant redraws, not an exception.

placement covers allowOverlap / anchor / offset / padding and source covers image / type / atlas, which is why those are not listed separately. iconSize compares by identity, exactly as it did under the generated equals in 1.6.0, because IconSize has never declared one of its own.