@Override
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
        var triggers = annotations.stream()
            .filter(te -> {
                for (var trigger : KoraSchedulingAnnotationProcessor.triggers) {
                    if (te.getQualifiedName().contentEquals(trigger.canonicalName())) {
                        return true;
                    }
                }
                return false;
            })
            .toArray(TypeElement[]::new);
        var scheduledMethods = roundEnv.getElementsAnnotatedWithAny(triggers);
        var scheduledTypes = scheduledMethods.stream().collect(Collectors.groupingBy(e -> {
            var type = (TypeElement) e.getEnclosingElement();
            return type.getQualifiedName().toString();
        }));
        for (var entry : scheduledTypes.entrySet()) {
            var methods = entry.getValue();
            var type = (TypeElement) entry.getValue().get(0).getEnclosingElement();
            try {
                this.generateModule(type, methods);
            } catch (ProcessingErrorException e) {
                e.printError(this.processingEnv);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            // todo exceptions
        }

        return false;
    }
@Test
    void testScheduledJdkAtFixedDelayTest() throws Exception {
        process(ScheduledJdkAtFixedDelayTest.class);
    }