ViddikKspDeclarationsTask
Copies the main compilation's output with everything but the declarations taken out, for the test source set's KSP run to read instead of the real classes.
KSP re-runs whenever a class on its classpath changes, and with Compose almost every edit changes one: the compiler puts @FunctionKeyMeta(startOffset, endOffset) on every composable, so retyping a string literal moves the offsets of every composable after it in the file. KSP then marks every fixture file that looks the class up as dirty and reprocesses it — on a module of 1000 fixtures, ~0.8 s added to every edit-and-record cycle, for a registry that comes out byte-identical.
The snapshot keeps what a processor can see — classes, signatures, fields and their constant values, annotations, Kotlin metadata, resources such as *.kotlin_module — and drops method bodies, debug information, FunctionKeyMeta, synthetic classes and members, and anonymous inner-class entries. A file is rewritten only when its snapshot differs, so an edit that changes no declaration leaves this task's output — and with it KSP's input — exactly as it was.