Per-row laziness: the returned index is empty up-front. Each
accessor builds its column on first call and caches the value
in a per-id row. releaseHeavyRows clears the heavier
caches; invalidateGeometry / invalidateObject
/ invalidateReferences drop the corresponding scopes.
Callers normally don't construct this directly — they go
through getInspectionIndex which keeps a WeakMap-cached
instance per SceneModel for the duration of the SceneModel's
life.
Build a fresh SceneModelInspectionIndex for
sceneModel.Per-row laziness: the returned index is empty up-front. Each accessor builds its column on first call and caches the value in a per-id row. releaseHeavyRows clears the heavier caches; invalidateGeometry / invalidateObject / invalidateReferences drop the corresponding scopes.
Callers normally don't construct this directly — they go through getInspectionIndex which keeps a WeakMap-cached instance per SceneModel for the duration of the SceneModel's life.