use custom layout invalidation context to suppress unneeded computations
lazily update constraints (conflicts resolved)
lazily update fonts/text
do not use concurrent enumeration