A prime example being Annotations with values which need to be accessed for the code generation.
class Foo Processor extends AbstractClassProcessor {
override doTransform(MutableClassDeclaration factory, extension TransformationContext context) {
val mapper = factory.findAnnotation(Foo.findTypeGlobally)
val targets = mapper.getStringArrayValue("targets") // Problem: Manually set the expected type, and magic value for the field name
val targets = Foo.targets(mapper) // Currently using: Through an extension method on Class<Foo>; however, causes clashes through type erasure on Class.
val targets = mapper::targets // Ideal
val targets = factory::Foo::targets // Even more ideal; if MutableClassDeclaration has a generic and knows it type; and the :: operator infers Annotation lookup.
}