Fabric benefitted from removing as? casts in tight loops due to testing for protocol conformance.
This can be optimized by moving types to the a concrete implementation, allow for is checks for as? and avoiding witness table lookup.
The largest opportunity for a win is inside of updateLists recursive gathering / testing for types, which on larger scenes eats a decent chunk of time.
Parameter isnt in the hot rendering path (as far as ive seen) so likely fine to keep as is.