public CustomMembersHolder processVariants(GroovyClassDescriptor descriptor, ProcessingContext ctx) {
    if (!DefaultGroovyMethods.asBoolean(getEnhancers())) return CustomMembersHolder.EMPTY;

    List<CustomMembersHolder> holders = new ArrayList<>();
    for (Pair<ContextFilter, Closure> pair : getEnhancers()) {
      ProgressManager.checkCanceled();
      ctx.put(DslPointcut.BOUND, null);
      if (pair.getFirst().isApplicable(descriptor, ctx)) {
        CustomMembersGenerator generator = new CustomMembersGenerator(descriptor, ctx.get(DslPointcut.BOUND));
        doRun(generator, pair.getSecond());
        List<CustomMembersHolder> membersHolder = generator.getMembersHolder();
        if (membersHolder != null) {
          holders.addAll(membersHolder);
        }
      }
    }

    return CustomMembersHolder.create(holders);
  }
public CustomMembersHolder processVariants(GroovyClassDescriptor descriptor, ProcessingContext ctx)