@CompileStatic @Canonical class HeaderExtractorFactory { AnnotationBasedHeaderExtractor forType(Class header){ return new AnnotationBasedHeaderExtractor() } FieldBasedHeaderExtractor forType(Class header){ return new FieldBasedHeaderExtractor() } }